我正在编写一个类(在头文件中),需要以下方法:
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 ++语法专家。)
答案 0 :(得分:5)
无法避免嵌套的命名空间。
对于class
与struct
与union
的对比,部分:class
和struct
可以互换使用。如果它是union
,则必须将其声明为此类。