结构元素的枚举 C++

Enumeration of struct elements c++

我只是想用 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++ 得到的错误是:"enumerator value for ‘right’ is not an integer constant"(其他错误也是如此)。甚至可以这样做吗?否则我可以找到另一种方法来做到这一点,但我发现这个解决方案非常优雅。

如果你想要的只是一堆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