有没有办法将所有枚举 constants 纳入范围?我不是指类型,我指的是常量本身。
struct Foo {
enum Bar {
A = 1, B = 2, C = 4, D = 8
};
};
int main() {
using E = Foo;
int v = E::A | E::B | E::C | E::D;
// But is it possible to instead do...
using Foo::Bar::*; // (not real C++)
int v = A|B|C|D; // <-- all enum constants are brought into scope
}
最佳答案
// This already works, of course. using E = Foo; Foo::Bar v = E::A | E::B | E::C | E::D;
嗯,不是真的,因为 E::A | E::B | E::C | E::D
是一个 int
和 you can't implicitly convert an int
to an enum
.
但这并不能阻止您使用 c++20的使用枚举
(除非你不能使用C++20):
struct Foo {
enum Bar {
A = 1, B = 2, C = 4, D = 8
};
};
int main() {
using enum Foo::Bar; // (real C++20!)
Foo::Bar v = D;
}
关于c++ - 您如何将所有枚举常量纳入范围?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70142196/