【问题标题】:C++ Forward declaring class scoped enumerationC++ 前向声明类作用域枚举
【发布时间】:2012-12-12 14:36:43
【问题描述】:

我想知道是否可以转发声明在另一个类范围内定义的枚举。例如,考虑以下情况:

//A.h
class A
{
public:
    enum class type: unsigned long { /*some stuff*/ }
};

现在,在另一个头文件中,我想转发声明“类型”枚举(假设下面的 B 类有一个函数可以处理 A::type)

//B.h
enum A::type; //use of undefined type 'A'

class B
{
public:
    UseTypeEnum(A::Type&);
};

这也不起作用:

//B.h
class A;
enum A::type; //still use of undefined type

class B...

如果在A.h.中在全局范围内声明枚举是没有问题的

有什么办法吗?

【问题讨论】:

标签: c++ c++11


【解决方案1】:

您不能在类定义之外声明嵌套类型。

如果您需要在类之外使用它们,则必须包含类定义,或者将它们移动到命名空间中。

【讨论】:

  • 可悲的是当它与外部库有关时。
猜你喜欢
  • 1970-01-01
  • 2011-11-20
  • 2010-09-09
  • 2023-03-27
  • 2010-10-31
  • 1970-01-01
相关资源
最近更新 更多