我只是想用 C++ 创建几个结构元素的枚举(实际上它可能看起来更像 C,所以如果你有任何建议让它看起来更像 C++,我会采纳)。这是代码:
struct Vect
{
int x;
int y;
};
enum Direction
{
right = (Vect) {1, 0},
left = (Vect) {-1, 0},
down = (Vect) {0, 1},
up = (Vect) {0, -1}
};
我从 g++ 得到的错误是:“‘right’的枚举值不是整数常量”(其他错误也是如此)。甚至可以这样做吗?否则我可以找到另一种方法来做到这一点,但我发现这个解决方案非常优雅。
最佳答案
如果你想要的只是一堆Vect
类型的常量表达式,你可以这样定义它们:
namespace Direction
{
constexpr Vect right = { 1, 0 };
constexpr Vect left = {-1, 0 };
constexpr Vect down = { 0, 1 };
constexpr Vect up = { 0, -1 };
}
Vect
如您所见,它是文字类型,这使它成为可能。几乎就是为什么要引入 constexpr
。
关于c++ - 结构元素的枚举 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47977027/