无法初始化类型为'int'的右值的'designFlags'类型的变量

ZAX9732

我正在尝试创建一个枚举标志,以查看某件事是否为粗体和斜体,但是我遇到了编译错误:错误:无法初始化值为'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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

错误无法初始化右值类型为'int'的类型为'int *'的参数

访问我的 NSMutableArray 时,我收到一条错误消息,例如“无法使用类型为 'id' 的右值来初始化类型为 'int' 的变量”

Android-NDK-C ++-无法使用'jlong *'类型的右值初始化'int *'类型的变量(又名'long long *')

“类型为'int'的右值的类型为'int&'的非常量引用的无效初始化”:递归引用传递函数

C ++无法使用“ char”类型的右值初始化“ char *”类型的变量

C ++:无法使用“ char * [x]”类型的右值初始化“ char **”类型的变量

C:无法使用void *类型的右值初始化变量

无法使用类型为JSON的参数列表调用类型为'Int'的初始化程序

收到错误:无法使用类型为'int'的右值的地址

错误:无法使用“布尔”类型的右值初始化“类型*”类型的返回对象

无法使用类型为“([Int])”的参数列表调用类型“Double”的初始化程序

无法使用类型为double的左值初始化类型为'id _NonNull'的参数

无法使用类型为'Shape *'的左值初始化类型为'Shape Shape :: *'的返回对象

无法使用类型为“(Int32?)”的参数列表调用类型“UnsafeMutablePointer<Int32>”的初始化程序

无法将类型为'int&'的非常量左值引用绑定到类型为'int'的右值

C++:无法在使用类型条件的模板函数中用类型为“double”的左值初始化“char*”类型的参数

无法使用最新的xcode的左值初始化类型为参数的参数引发错误

malloc错误:类型“ void *”的值不能用于初始化类型“ int **”的实体

错误:无法使用类型为“ const char [34]”的左值初始化类型为“ const char”的返回对象

无法使用类型为“ const char [X]”的左值初始化类型为“ constsigned char *”的成员子对象

无法使用类型为“(Int?)”的参数列表调用类型“String”的初始值设定项

从类型''的右值对类型''的非常量引用进行了无效的初始化

无法为类型为[Int]的类型为[[NSIndexPath]]的值下标

错误:无法使用初始化程序列表初始化非聚合类型“ vector <int>”

错误:无法使用初始化程序列表初始化非聚合类型的vector <int>

使用对象初始化程序将值初始化为类的类型列表的公共变量

无法为索引类型为int的[CLPlacemark]类型的值下标

无法分配类型为'MDLMaterialProperty ?!'的值 到'Int'类型的值

类型为'int&'的非常量引用的初始化无效,这是什么原因?