Статический импорт в C ++ 11 (например, класс enum)

Мое использование класса enum (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);

То же самое касается вложенных классов — могу ли я их импортировать?

5

Решение

нет, это невозможно.

Вы не можете опустить operation_type часть, потому что вы сделали это область видимости перечисление (и это все, что касается перечисления в области видимости). Если вы хотите избежать этого, вы должны сделать это без границ enum (удаляя class ключевое слово).

Кроме того, вне matrix Вы не можете импортировать имя участника через using декларация как будто matrix было пространство имен. Кроме того, согласно пункту 7.3.3 / 7 стандарта C ++ 11:

Декларация об использовании не должна называть перечислитель с областью видимости.

5

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]