【发布时间】:2021-04-29 16:26:11
【问题描述】:
SomeHeader.h:
enum class TypeEnum
{
None = 0,
BYTE,
UBYTE,
SHORT,
USHORT
};
AnotherHeader.h
struct Structure
{
TypeEnum type;
};
引发错误: C3646 'type': 未知的覆盖说明符
编辑: 似乎没有人知道原因,所以我留下了可能不相关的其他信息:
- TypeEnum 在我的真实代码中有 33 个元素
- 它位于头文件的顶部
- 在其他标题中一切正常
- AnotherHeader.h 中使用 TypeEnum 的其他结构不能正常工作
- 当我在 AnotherHeader.h 中定义 TypeEnum 时,它说枚举类重新定义应该是这样
- 将 TypeEnum 改为 enum 而不是 enum 类不起作用
- 其他枚举也不起作用
代码:
SomeHeader.h:
enum class TypeSpec
{
None = 0,
BYTE,
UBYTE,
SHORT,
USHORT,
INT,
UINT,
FLOAT,
DOUBLE,
VEC2,
VEC3,
VEC4,
VEC2I,
VEC3I,
VEC4I,
VEC2U,
VEC3U,
VEC4U,
VEC2D,
VEC3D,
VEC4D,
MAT2,
MAT3,
MAT4,
MAT2I,
MAT3I,
MAT4I,
MAT2U,
MAT3U,
MAT4U,
MAT2D,
MAT3D,
MAT4D
};
另一个Header.h:
struct BufferElement
{
const char* name;
TypeSpec type;
unsigned int size;
unsigned int offset;
bool normalized;
BufferElement() : name("none"), type(TypeSpec::None), size(0), offset(0), normalized(false) {}
BufferElement(TypeSpec _type, const char* _name, bool _normalized = false) :
name(_name), type(_type), size(RenderCommand::getTypeComponentCount(type)), offset(0), normalized(_normalized) {}
};
【问题讨论】:
-
你是否在这个头文件中包含了另一个头文件?
-
当我在 AnotherHeader.h 中定义枚举类时,它当然可以正常工作,但这有什么问题?
-
也许在 AnotherHeader.h 中你可以在开头添加:#include "SomeHeader.h"
-
我这样做了,但没有任何反应
-
好吧,很遗憾,我无法重现此内容。大概在实际代码中存在一些与您拥有的所有其他枚举类不同的杂散错误,但不可能从这种表示中发现它。