【发布时间】:2019-02-16 09:54:37
【问题描述】:
我有一个头文件,它最终会包含多个枚举类。但是,当我将头文件包含在另一个文件中并尝试使用 enum 类时,我的程序将无法编译。例如:
枚举.h:
#ifndef ENUMS_H
#define ENUMS_H
enum class TokenType : char
{
IDEN,
STRING,
SEMICO
};
#endif
和 main.cpp:
#include <iostream>
#include "enums.h"
int main()
{
char token = TokenType::STRING; //Does not compile!
}
但是,当我使用常规枚举时,它可以正确编译:
枚举.h:
#ifndef ENUMS_H
#define ENUMS_H
enum TokenType : char
{
IDEN,
STRING,
SEMICO
}
#endif
和 main.cpp:
#include <iostream>
#include "enums.h"
int main()
{
char token = STRING; //This does compile!
}
有人知道如何正确执行此操作吗?我搜索了很多,但一无所获。
【问题讨论】:
-
TokenType不是char,即使它的基础类型是。它是自己的类型,不会隐式转换。您需要使用正确 (TokenType) 类型的变量或使用显式强制转换。顺便说一句,与旧的enums 相比,这是一件好的事情。
标签: c++ c++11 visual-c++ enums