【发布时间】:2018-08-02 11:54:43
【问题描述】:
Types.h:
enum MyEnum : int8
{
invalid = -1,
valid = 0,
}
class TestClass
{ ... default stuff ...}
MyOtherHeader.h:
enum MyEnum : int8;
class TestClass;
class MyClass
{
MyEnum Val = -1;
TestClass* MyObj= nullptr;
}
为什么我们可以将null 分配给转发声明的类指针,但不能将enum 的已定义基础类型的值分配给转发声明的类指针?
编译器不应该能够正确“推断”吗?
TLDR:问题是:为什么我们需要解决方法来为前向声明的枚举属性分配一个默认值?
【问题讨论】:
-
Define "can't assign a value" 你得到编译错误吗?如果是这样,请复制粘贴其文本。
-
MyEnum Val{-1};被 gcc/clang Demo 接受。 -
声明不透明并不重要。即使看到枚举器,您也无法分配
-1。西蒙的答案有你的解决方法。 -
问题不是,什么是解决方法,而是为什么我们需要解决方法?
-
整数和枚举数之间没有隐式转换。从来没有。