摘要:
有没有任何文件(例如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 { ... };
}
这里的关键区别在于 样式1 中的
class N::X
和 样��2 中的namespace N { class Y {...}...
,即我们在样式2中将类Y包装在命名空间中。对我来说,这两种风格都是有效的(我们从未在VS20xx和Clang上编译它们时遇到过问题),但我的一个同事质疑 样式1 是否有效,因为我们正在使用的工具没有正确识别 class X 是命名空间的一部分。
我希望有人能向我提供参考文献,证明 样式1 是定义C ++类的有效方式。