如果我有一个名为SomeClassName
的班级,每次我指的是该班级的某些内容时,我是否可以避免写SomeClassName::
?我正在考虑名称空间,我可以在using MyNamespace { ... };
中包含定义,并避免每次都写下类的名称空间(不好的做法?)。
其中一个原因是现在我有这样的代码,这很长很难读懂:
SomeClassName::SimpleStruct SomeClassName::m_someTable[SomeClassName::m_someTableSize][SomeClassName::m_someTableSize] = {SomeClassName::EmptyStruct};
答案 0 :(得分:2)
不,但你可以使用typedef来缩短名称,如果你所追求的只是打字更少:
typedef SomeClassName SCN;
答案 1 :(得分:1)
只需使用全局类型/枚举。
答案 2 :(得分:1)
您遗憾的是,在引用另一个命名空间/范围内的标识符(类定义范围)时,必须使用::
范围解析运算符对标识符名称进行完全限定,以及using
指令仅适用于namesapaces。唯一的另一种选择是使用像John提到的typedefs
,或者可能使用宏。如果你没有这个限制,那么你最终会在整个地方出现标识符名称冲突,最终会出现C风格的命名约定,其中函数名称会变得很长,因为它们基本上将命名空间放入函数/标识符名称。