|
|
1
79
因为你不能。在C++语言中,完全限定的名称仅用于引用。 现有的 (即先前声明的)实体。不能用来介绍 新的 实体。
你呢
是
实际上,“重新打开”命名空间以声明新实体。如果上课
一旦你达到目的
定义
预先声明的类,不需要再次“重新打开”命名空间。您可以在全局命名空间(或包含您的
因为您所引用的实体已在命名空间中声明
|
|
|
2
179
你得到了正确的答案,让我试着重新措辞:
你必须这样做,因为
但是编译器不知道您在说什么,因为它不知道任何名为
它仍然不起作用,因为您不能在命名空间内从该命名空间之外声明类。您必须在命名空间中。 所以,实际上,您可以在名称空间中向前声明一个类。只要这样做:
|
|
|
3
19
我想这也是您不能像这样一次声明嵌套命名空间的原因:
你必须这样做:
|
|
|
4
2
不清楚正向声明变量的类型实际上是什么。远期申报
或
|
|
|
5
0
关于拒绝的理由,有很多很好的答案。我只想提供无聊的标准条款,具体禁止它。这对于C++ 17(N465)是成立的。 有问题的段落是 [class.name]/2 :
上面定义了什么构成了正向声明(或类的重新声明)。本质上,它必须是
这是通用方案的产物
|