20

我可以通过这样做在命名空间中转发声明一个函数:

void myNamespace::doThing();

这相当于:

namespace myNamespace
{
  void doThing();
}

在命名空间中转发声明一个类:

namespace myNamespace
{
  class myClass;
}

有没有更短的方法来做到这一点?我在想一些事情:

class myNamespace::myClass;
4

3 回答 3

28

不,但是稍微重新格式化

namespace myNamespace { class myClass; }

并不比

class myNamespace::myClass;
于 2009-09-02T16:47:42.667 回答
11

我以前也想做同样的事情——这是不允许的。命名空间成员必须在namespace-body. 只能使用范围解析运算符“引用”它们。

请参阅标准中的 3.3.5“命名空间范围”。

在命名空间主体中声明的实体被称为命名空间的成员,由这些声明引入命名空间的声明区域的名称被称为命名空间的成员名称。

命名空间成员也可以在将 :: 范围解析运算符 (5.1) 应用于其命名空间的名称或在 using 指令中指定成员命名空间的命名空间名称之后被引用;

于 2009-09-02T16:23:18.177 回答
3

我不这么认为。

于 2009-09-02T16:15:28.317 回答