我可以定义一个类型作为枚举的基础类型吗?像这样的东西:
struct S {
S(int i) : value(i) {}
operator int() { return value; }
int value;
};
enum E : S {
A, B, C
};
Run Code Online (Sandbox Code Playgroud)
错误消息告诉我S必须是整数类型.我试图std::is_integral像下面那样专注,但似乎在这种情况下,"整数类型"实际上意味着其中一种基本类型.
namespace std {
template<>
struct is_integral<S> : public true_type {};
}
Run Code Online (Sandbox Code Playgroud)
那么,使用任何版本的C++,有没有办法让自定义类型作为整数类型传递?
我可以定义一个类型用作枚举的基础类型吗?
您只能使用整型来定义enums,而不能使用任何旧类型。
例如,您可以使用
enum E : char {
A, B, C
};
Run Code Online (Sandbox Code Playgroud)
指示 的值E将属于类型char。但你不能使用
enum E : S {
A, B, C
};
Run Code Online (Sandbox Code Playgroud)
类型
bool、char、char16_t、char32_t、wchar_t以及有符号和无符号整数类型统称为整型。整型的同义词是整型。
| 归档时间: |
|
| 查看次数: |
1276 次 |
| 最近记录: |