是否有更短的方法来在命名空间中转发声明类?

发布于 2024-08-03 14:14:40 字数 350 浏览 7 评论 0原文

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

void myNamespace::doThing();

这相当于:

namespace myNamespace
{
  void doThing();
}

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

namespace myNamespace
{
  class myClass;
}

是否有更短的方法来执行此操作?我在想一些类似的事情:

class myNamespace::myClass;

I can forward declare a function in a namespace by doing this:

void myNamespace::doThing();

which is equivalent to:

namespace myNamespace
{
  void doThing();
}

To forward declare a class in a namespace:

namespace myNamespace
{
  class myClass;
}

Is there a shorter way to do this? I was thinking something along the lines of:

class myNamespace::myClass;

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

您的好友蓝忘机已上羡 2024-08-10 14:14:40

不,但是稍微重新格式化

namespace myNamespace { class myClass; }

并不比

class myNamespace::myClass;

No, however with a little reformatting

namespace myNamespace { class myClass; }

isn't much worse than

class myNamespace::myClass;
晨光如昨 2024-08-10 14:14:40

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

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

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

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

I've wanted to do the same thing before - it's not allowed. A namespace member must be declared in a namespace-body. They can only be "referred to" using the scope resolution operator.

See 3.3.5 "Namespace scope" in the standard.

Entities declared in a namespace-body are said to be members of the namespace, and names introduced by these declarations into the declarative region of the namespace are said to be member names of the namespace.

and

A namespace member can also be referred to after the :: scope resolution operator (5.1) applied to the name of its namespace or the name of a namespace which nominates the member’s namespace in a using-directive;

风月客 2024-08-10 14:14:40

我不这么认为。

I don't think so.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文