【问题标题】:Shorten static definitions缩短静态定义
【发布时间】:2011-09-02 20:27:59
【问题描述】:

如果我有一个名为SomeClassName 的类,我可以避免在每次提到该类中的某些内容时写SomeClassName:: 吗?我正在考虑命名空间,我可以将定义包含在using MyNamespace { ... }; 中,并避免每次都编写类所在的命名空间(不好的做法?)。

其中一个原因是我现在有这样的代码,它很长而且很难在 imo 中阅读:

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

【问题讨论】:

标签: c++ class namespaces scope


【解决方案1】:

不,但你可以用 typedef 来缩短名称,如果你只是想减少输入:

typedef SomeClassName SCN;

【讨论】:

  • 这是否适用于问题中概述的特定情况,定义类中声明的静态变量?我认为不会。
  • @Mark 它适用于一个简单的案例,但我无法理解/复制 OP 给出的示例。
【解决方案2】:

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

【讨论】:

    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 2023-04-05
      • 1970-01-01
      • 2021-09-25
      • 2011-10-17
      • 2013-07-25
      • 2021-09-11
      • 1970-01-01
      • 1970-01-01
      • 2011-06-03
      相关资源
      最近更新 更多