gpt4 book ai didi

c++ - "enum - invalid conversion from int"在类里面

转载 作者:太空狗 更新时间:2023-10-29 19:41:52 26 4
gpt4 key购买 nike

我在将方法参数放入我的类时遇到问题:

class A {
public:
enum Mode {ModeA, ModeB, ModeC};

... // other methods, constructor etc

void setMode(Mode m) {
mMode = m;
}

private:
Mode mMode;
}

int main(int argc, char **argv) {
A a;
a.setMode(A::ModeA | A::ModeC );

return 0;
}

问题是,我收到 C++ 编译器错误 invalid vconversion from int to A::Mode,我不明白,为什么我不能连接到枚举值?我需要在我的代码,所以任何解决这个问题的帮助都会非常好。

最佳答案

默认情况下,operator| 对两个枚举的结果不是枚举。课后,添加如下内容:

A::Mode operator|( A::Mode a, A::Mode b )
{
return A::Mode( int( a ) | int( b ) );
}

如果你的标准库支持它,下面是更多的 future 证据,因为转换为 int 并不总是正确的:

A::Mode operator|( A::Mode a, A::Mode b )
{
typedef std::underlying_type< A::Mode >::type UL;
return A::Mode( static_cast< UL >( a ) | static_cast< UL >( b ) );
}

与其他答案不同,您只需添加一次(添加到正确的位置),所有用途都会自动覆盖。

关于c++ - "enum - invalid conversion from int"在类里面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19337064/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com