【发布时间】:2018-04-16 08:21:33
【问题描述】:
参考这段代码:
namespace Y {
char f() { return y; } // error: y was not declared in this scope
char y;
}
struct X {
char f() { return x; } // OK
char x;
};
命名空间定义的声明区域是它的 命名空间主体。在命名空间主体中声明的实体被称为 命名空间的成员,以及这些声明引入的名称 进入命名空间的声明区域被称为成员 命名空间的名称。它的潜在范围包括从名称声明点开始的命名空间。
问题
说错误是由于
Y::y尚未在Y::f()中声明是否正确?我不明白为什么
namespace成员在声明期间没有“reodering”,而struct有。禁止这种行为的原因可能是什么? 标准是否有类似的规定?
【问题讨论】:
-
声明通常必须在使用之前,在类成员函数内联实现中使用类成员是一个罕见的例外
标签: c++ scope namespaces declaration