C++ 向前声明类范围的枚举
C++ Forward declaring class scoped enumeration
我想知道是否可以转发声明在另一个类范围内定义的枚举。例如,请考虑以下事项:
//A.h
class A
{
public:
enum class type: unsigned long { /*some stuff*/ }
};
现在,在另一个标头中,我想转发声明"type"枚举(假设下面的类 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 ++枚举范围无法使用-std=c ++ 98进行编译,但使用-std=c ++ 11可以
- 如何在枚举上设置范围?
- 枚举范围无法通过 C++ 中的类中的结构访问
- 为什么可以访问范围之外的枚举器?
- 范围的枚举(枚举类)关系运营商
- 为什么可以使用范围运算符和类 A 名称在类 B 中访问类 A(公共)中的枚举
- 在C++14中,在哪个作用域中声明了重新声明枚举的非范围枚举器
- 在范围内添加位操作和转换式的枚举 - 圣诞节探索
- 枚举类别范围-C
- 是否可以知道非固定枚举者的范围
- C 在开关语句中使用特定类和枚举范围
- C++ 向前声明类范围的枚举
- C :枚举类型作为模板参数 - 全局范围
- 阵列索引(转换为整数)用范围枚举
- 使结构内定义的枚举具有全局范围C++
- 定义基于模板的映射指针,以便在验证范围时将 int 解析为枚举
- 如何使用无范围枚举器,就好像它的类型是它的基础类型一样
- 对象、枚举类型和范围的问题
- Project Euler#3获取一个Intellisense表达式,该表达式必须具有整型或无范围枚举类型
- C++错误:在使用运算符[]将元素插入std::map时,“表达式必须具有整型或非范围枚举类型”