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

标签 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++ 语法方面的专家)。

最佳答案

嵌套命名空间是不可避免的。

至于class vs. struct vs. union,部分:classstruct 可以互换使用。如果它是一个 union,则必须这样声明。

关于c++ - 在嵌套命名空间中转发声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20968565/

相关文章:

c++ - 为什么 A/<constant-int> 在 A 无符号与有符号时更快?

c++ - 在 C++ 中使用线程

c++ - 多组独立的随机数

c++ - 通过转换运算符推导模板参数类型

c++ - 错误 C2672: 'operator __surrogate_func':使用 std::upper_bound 时未找到匹配的重载函数

带有析构函数的 C++ 右值表达式在 Visual Studio 2010 中生成警告 C4701

c++ - 如何使用 Arnold API 实现兰伯特着色器?

c++ - 链接错误 : Boost Library on Windows using MinGW

c++ - 遍历双向链表的前面

c++ - c++ 中 map_instance[key] 与 map_instance.find(key) 的区别