我可以通过以下方式在命名空间中前向声明一个函数:
void myNamespace::doThing();
等同于:
namespace myNamespace
{
void doThing();
}
在命名空间中前向声明一个类:
namespace myNamespace
{
class myClass;
}
有没有更短的方法来做这件事?我想到了一些类似于这样的命令:
class myNamespace::myClass;
我可以通过以下方式在命名空间中前向声明一个函数:
void myNamespace::doThing();
等同于:
namespace myNamespace
{
void doThing();
}
在命名空间中前向声明一个类:
namespace myNamespace
{
class myClass;
}
有没有更短的方法来做这件事?我想到了一些类似于这样的命令:
class myNamespace::myClass;
namespace myNamespace { class myClass; }
并不比...糟糕太多
class myNamespace::myClass;
我之前也想过做同样的事情 - 但这是不被允许的。命名空间成员必须在 namespace-body
中声明。只能使用作用域解析运算符"引用"它们。
请参见标准中的3.3.5“命名空间作用域”。
在
namespace-body
中声明的实体被称为命名空间的成员,由这些声明引入命名空间声明区域的名称被称为该命名空间的成员名称。
并且
在将::作用域解析运算符(5.1)应用于其命名空间的名称或指定该成员命名空间的名称的using指令后,还可以引用命名空间成员。