缩短静态定义

时间:2011-05-26 18:25:02

标签: c++ class namespaces scope

如果我有一个名为SomeClassName的班级,每次我指的是该班级的某些内容时,我是否可以避免写SomeClassName::?我正在考虑名称空间,我可以在using MyNamespace { ... };中包含定义,并避免每次都写下类的名称空间(不好的做法?)。

其中一个原因是现在我有这样的代码,这很长很难读懂:

SomeClassName::SimpleStruct SomeClassName::m_someTable[SomeClassName::m_someTableSize][SomeClassName::m_someTableSize] = {SomeClassName::EmptyStruct};

3 个答案:

答案 0 :(得分:2)

不,但你可以使用typedef来缩短名称,如果你所追求的只是打字更少:

typedef SomeClassName SCN;

答案 1 :(得分:1)

只需使用全局类型/枚举。

答案 2 :(得分:1)

您遗憾的是,在引用另一个命名空间/范围内的标识符(类定义范围)时,必须使用::范围解析运算符对标识符名称进行完全限定,以及using指令仅适用于namesapaces。唯一的另一种选择是使用像John提到的typedefs,或者可能使用宏。如果你没有这个限制,那么你最终会在整个地方出现标识符名称冲突,最终会出现C风格的命名约定,其中函数名称会变得很长,因为它们基本上将命名空间放入函数/标识符名称。