【发布时间】:2014-06-04 12:52:16
【问题描述】:
我试图理解以下引用的含义 (3.4.3/3 N3797):
qualified-id 后面的名称在 成员的类或命名空间。
namespace A
{
class C
{
public:
static const int a=7;
static int b;
};
}
int A::C::b=a; //7
static int b; 的范围仅由b 声明点之后的声明区域组成。其实:
在类中声明的名称的潜在范围不仅包括 名称声明点之后的声明区域,但是 也包括所有函数体、默认参数、 异常规范和大括号或等式初始化器 该类中的非静态数据成员
这意味着static const int a=7; 不属于static int b; 的范围。因此在int A::C::b=a; 中找不到static const int a=7。
这是标准中的错字还是我的误解?
【问题讨论】:
-
名称
b的(潜在)范围与与C关联的类范围不同。 -
您好像误会了什么。这两句话解释了不同的事情。
标签: c++ static-members qualified-name