问题描述
|
如果我有一个名为
SomeClassName
的类,是否可以避免在每次引用该类中的内容时都编写SomeClassName::
?我正在沿着命名空间的思路思考,可以将定义括在using MyNamespace { ... };
中,并避免每次都编写类所属的命名空间(不好的做法?)。
原因之一是现在我有这样的代码,它很长而且很难阅读imo:
SomeClassName::SimpleStruct SomeClassName::m_soMetable[SomeClassName::m_soMetableSize][SomeClassName::m_soMetableSize] = {SomeClassName::EmptyStruct};
解决方法
不,但是如果您所需要的只是较少的键入,则可以使用typedef来缩短名称:
typedef SomeClassName SCN;
,只需使用全局类型/枚举即可。
,不幸的是,当引用另一个名称空间/范围内的标识符时,必须使用ѭ5)范围解析运算符对标识符名称进行完全限定(类也定义了范围),using
指令仅适用于名称空间。唯一的其他选择是使用像约翰提到的ѭ7或宏。如果没有此限制,那么最终将导致标识符名称到处都是冲突,并且最终会出现C样式的命名约定,在这些约定中,函数名称会变得很长,因为它们基本上将名称空间放入了函数中/标识符名称。