5

我对枚举类(VS2012)的使用:

class matrix {
public:
    enum class operation_type {ADD, MULT};
    matrix(operation_type op);
...
}

在我使用的另一个片段中

matrix* m = new matrix(matrix::operation_type::ADD);

如果名称很长,这会变得非常混乱。

是否可以以某种方式导入枚举值以便我可以编写:

matrix* m = new matrix(ADD);

嵌套类也一样——我可以导入它们吗?

4

1 回答 1

5

,这是不可能的。

您不能省略该operation_type部分,因为您已将其设为范围枚举(这就是范围枚举的全部内容)。如果你想避免它,你必须使它成为一个无范围的enum(删除class关键字)。

此外,matrix您无法通过using声明导入成员名称,就像matrix命名空间一样。此外,根据 C++11 标准的第 7.3.3/7 段:

using-declaration 不应命名作用域枚举器。

于 2013-03-16T13:54:52.103 回答