在 C++ 中使用 class 的命名空间定义 class 的成员
Define members of a class using class's namespace in c++
我有几个 类 长名字和他们的成员函数。在 C++ 中,有一个技巧允许您使用一个命名空间并声明函数:
namespace_name::foo();
并这样定义它:
namespace namespace_name{
foo() {}
}
为了代码的清晰,我想知道是否有类似的方法来替换函数的定义:
LongClassName::LongFunctionName() {}
对不起,如果我使用了不当的词汇,但不知道如何描述问题。
In C++ there is a trick which allows you to use one namespace and turn
此 "trick" 允许您调用函数而无需指定带命名空间的完整函数名称。对于既不适用于命名空间也不适用于 class 的函数定义。对于名称空间级别的函数,您要么必须将该函数定义放在名称空间中,要么明确提及:
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()
用于 class 方法定义 - 必须始终使用 class 名称(如果有的话,也可能使用命名空间),除非您在 class 本身内部定义它们(并声明它们 inline
隐式):
class VeryLongName {
public:
void method1() {}
void method2() {}
};
我有几个 类 长名字和他们的成员函数。在 C++ 中,有一个技巧允许您使用一个命名空间并声明函数:
namespace_name::foo();
并这样定义它:
namespace namespace_name{
foo() {}
}
为了代码的清晰,我想知道是否有类似的方法来替换函数的定义:
LongClassName::LongFunctionName() {}
对不起,如果我使用了不当的词汇,但不知道如何描述问题。
In C++ there is a trick which allows you to use one namespace and turn
此 "trick" 允许您调用函数而无需指定带命名空间的完整函数名称。对于既不适用于命名空间也不适用于 class 的函数定义。对于名称空间级别的函数,您要么必须将该函数定义放在名称空间中,要么明确提及:
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()
用于 class 方法定义 - 必须始终使用 class 名称(如果有的话,也可能使用命名空间),除非您在 class 本身内部定义它们(并声明它们 inline
隐式):
class VeryLongName {
public:
void method1() {}
void method2() {}
};