在嵌套命名空间中转发声明

时间:2014-01-07 09:54:45

标签: c++ c++11

我正在编写一个类(在头文件中),需要以下方法:

static const foo::bar::clz* getSomething(void);

由于我不想用#include污染头文件,我选择转发声明 clz

namespace foo
{
    namespace bar
    {
        class clz;
    }
}

但这也很笨拙。在C ++ 11中有一种可行的方法吗?

的内容
class foo::bar::clz;

如果您不必预测它是否以classstructunion实施,那将会更好。还有那个C ++ 11语法学家吗? (typename auto可能是候选人,但我不是C ++语法专家。)

1 个答案:

答案 0 :(得分:5)

无法避免嵌套的命名空间。

对于classstructunion的对比,部分:classstruct可以互换使用。如果它是union,则必须将其声明为此类。