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介してメンバー名をインポートすることはできません。さらに、C ++11規格の7.3.3/7項によると:usingmatrix

using宣言は、スコープ付き列挙子を指定してはなりません。

于 2013-03-16T13:54:52.103 に答える