在非限定 id 之后的静态数据成员定义中使用的名称
Posted
技术标签:
【中文标题】在非限定 id 之后的静态数据成员定义中使用的名称【英文标题】:Name used in the static data member definition after unqualified id 【发布时间】:2014-05-29 05:59:15 【问题描述】:从秒。 N3797 的 3.4.1/13:
用于定义类 X 的静态数据成员的名称 (9.4.2) (在静态成员的限定 ID 之后)被查找为 如果该名称在 X 的成员函数中使用。
不清楚如何在数据成员的 unqualified-id 之后查找用于定义类 X 的静态数据成员的名称。我需要标准的报价。
【问题讨论】:
【参考方案1】:所有内容都写在 9.4.2 中。引自 n3376 9.4.2/2
在命名空间范围的定义中,静态数据的名称 成员应使用 :: 运算符由其类名限定。 该 静态数据成员定义中的初始化表达式在 其类的范围 [示例:
class process static process* run_chain; static process* running; ; process* process::running = get_main(); process* process::run_chain = running;
类进程的静态数据成员run_chain在全局中定义 范围;符号过程 ::run_chain 指定成员 run_chain 是类进程的成员,在类的范围内 过程。 在静态数据成员定义中,初始化器 表达式引用类进程运行的静态数据成员。 —结束示例]
【讨论】:
非常感谢您的报价。但是您能否澄清以下内容:为什么禁止静态非常量成员的类内定义?给我一个相应条款的参考。以上是关于在非限定 id 之后的静态数据成员定义中使用的名称的主要内容,如果未能解决你的问题,请参考以下文章