我正在编写一个需要以下方法的类(在头文件中):
static const foo::bar::clz* getSomething(void);
因为我不想用#include
污染头文件,所以我选择转发声明 clz
:
namespace foo
{
namespace bar
{
class clz;
}
}
但这也相当笨拙。在 C++11 中有更简单的方法吗?类似
的内容class foo::bar::clz;
如果您不必预测它是否作为 class
、struct
或 union
实现,那就更好了。 C++11 语法学家是否也涵盖了这一点? (typename auto
可能是候选者,但我不是 C++ 语法方面的专家)。
最佳答案
嵌套命名空间是不可避免的。
至于class
vs. struct
vs. union
,部分:class
和struct
可以互换使用。如果它是一个 union
,则必须这样声明。
关于c++ - 在嵌套命名空间中转发声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20968565/