在 C++ 中使用类的命名空间定义类的成员
Posted
技术标签:
【中文标题】在 C++ 中使用类的命名空间定义类的成员【英文标题】:Define members of a class using class's namespace in c++ 【发布时间】:2018-07-26 20:21:41 【问题描述】:我很少有名称很长的类以及它们的成员函数。在 C++ 中,有一个技巧可以让您使用一个命名空间并声明函数:
namespace_name::foo();
并像这样定义它:
namespace namespace_name
foo()
为了代码的清晰,我想知道是否有类似的方法来替换函数的定义:
LongClassName::LongFunctionName()
很抱歉,如果我使用了不当的词汇,但不知道如何描述问题。
【问题讨论】:
LongClassName son; /* son = show object name */ son.LongFunctionName();
怎么样? “长”名称至少有一部分被缩短了。
using ShortName = LongName;
这可能就是你要找的东西:***.com/a/9864472/3292279
【参考方案1】:
在 C++ 中有一个技巧可以让你使用一个命名空间然后转
这个“技巧”允许你调用函数而不用命名空间指定完整的函数名。对于既不适用于命名空间也不适用于类的函数定义。对于命名空间级别的函数,您要么必须将该函数定义放在命名空间中,要么明确提及:
namespace foo
void bar(); // foo::bar() declared
// you can define it as this
namespace foo
void bar()
// or this
void foo::bar()
// this does not work
using namespace foo;
void bar() // ::bar() is defined here not foo::bar()
对于类方法定义 - 必须始终使用类名(可能还有命名空间),除非您在类本身内部定义它们(并隐式声明它们 inline
):
class VeryLongName
public:
void method1()
void method2()
;
【讨论】:
哦,我明白了。我纠正了问题中的错误。无论如何,它不适用于课程,对吧? 对于方法的权利,您必须明确说明每个方法属于哪个类,除非您在类主体中定义它们。以上是关于在 C++ 中使用类的命名空间定义类的成员的主要内容,如果未能解决你的问题,请参考以下文章
为啥我不能创建在与类定义相同的命名空间中定义的 C++ 类的实例?