gpt4 book ai didi

c++ - 命名空间中类定义风格的有效性

转载 作者:太空狗 更新时间:2023-10-29 20:40:05 29 4
gpt4 key购买 nike

总结:

是否有任何文档(例如 c++ 标准)支持使用以下样式定义 C++ 类的有效性:

namespace N { class X; }
class N::X { ... }

详细信息:

我们在公司的一些代码中使用了几种样式来定义类:

// n_x.h - style 1
namespace N {
class X;
}

class N::X {...}

// n_y.h - style 2
namespace N {
class Y;
}

namespace N {
class Y { ... };
}

这里的关键区别在于 class N::X样式 1namespace N { class Y {...}... 中在样式 2 中,即我们在命名空间中以样式 2 包装类 Y。

这两种风格对我来说似乎都有效(我们在 VS20xx 和 Clang 上编译它们从来没有遇到过问题),但一位同事质疑风格 1 作为我们用来分析我们的工具是否有效使用样式 1 时,代码无法正确地将 class X 识别为命名空间的一部分。

我希望有人可以向我提供一份文档引用,说明样式 1 是在 C++ 中定义类的有效方法。

最佳答案

是的,样式 1 有效。

[namespace.memdef]/2 声明:

Members of a named namespace can also be defined outside that namespace by explicit qualification (3.4.3.2) of the name being defined, provided that the entity being defined was already declared in the namespace and the definition appears after the point of declaration in a namespace that encloses the declaration’s namespace.

关于c++ - 命名空间中类定义风格的有效性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25566589/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com