Мое использование класса 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);
То же самое касается вложенных классов — могу ли я их импортировать?
нет, это невозможно.
Вы не можете опустить operation_type
часть, потому что вы сделали это область видимости перечисление (и это все, что касается перечисления в области видимости). Если вы хотите избежать этого, вы должны сделать это без границ enum
(удаляя class
ключевое слово).
Кроме того, вне matrix
Вы не можете импортировать имя участника через using
декларация как будто matrix
было пространство имен. Кроме того, согласно пункту 7.3.3 / 7 стандарта C ++ 11:
Декларация об использовании не должна называть перечислитель с областью видимости.
Других решений пока нет …