c++ - 结构元素的枚举 C++

标签 c++ struct enumeration

我只是想用 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/

相关文章:

c++ - C++中 protected 和私有(private)派生之间的区别是什么

c - 非 NULL 用户输入

c typedef(ed) 不透明指针

java - "if"语句与 OO 设计

c++ - 我如何设置for循环内的其他条件?

c++ - "const char *"类型的参数与 "LPCWSTR"类型的参数不兼容

c++ - 如何使用 MySQL(在 C++ 中)执行 INSERT 语句?

在结构中创建指向结构的指针数组

c# - '集合已修改;使用 async/await 可能无法执行枚举操作

python - 如何使用枚举键将用户输入添加到字典中?