我正在尝试创建一个枚举标志,以查看某件事是否为粗体和斜体,但是我遇到了编译错误:错误:无法初始化值为'int'的变量'designFlags'的值designFlags myDesign = BOLD | 强调;
#include <iostream>
using namespace std;
enum designFlags {
BOLD = 1,
ITALICS = 2,
UNDERLINE = 4
};
int main()
{
designFlags myDesign = BOLD | UNDERLINE;
// 00000001
// | 00000100
// ___________
// 00000101
cout << myDesign;
return 0;
}
C ++标准阻止您执行从int
到的enum
隐式转换(注意:允许从enum
到的隐式转换int
)。
但是,您可以改为执行静态强制转换:
designFlags myDesign = static_cast<designFlags>(BOLD | UNDERLINE);
cout << myDesign; // prints 5
请记住,最有可能导致结果的值不是中指定的值之一designFlags
。这通常是一种常见的做法,但是您必须依靠按位操作来执行比较:
例如:
// wrong
if (myDesign == BOLD)
// ok (most of the time)
if (myDesign & BOLD)
// always ok
if ((myDesign & BOLD) == BOLD)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句