Есть ли способ определить класс, который можно инициализировать, например, как это делает enum?
Например:
class TYPE;
TYPE _type {
a,
b,
c,
};
_type::a;
TYPE::TYPENAME tn = _type::c; // or such similar things
_type.get_size(); // the example returns 3
Доступно ли такое определение класса в c ++?Если да, объясните, пожалуйста, метод и как он работает?Если нет, то я мог бы использовать вариационные шаблоны для реализации.
РЕДАКТИРОВАТЬ
Если бы я создал класс, как мне нравится, то следующий код будет работать:
main.cpp
#include <iostream>
#include "advanced_enum_class_name_TYPE.h"
TYPE type { a, b, c }; // a, b, c have not been defined before this line
int main() {
type _type = type::a;
std::cout << type.get_size() << std::endl; // 3
if(_type == type::b) { // false
std::cout << "it is b!" << std::endl;
}
else {
std::cout << "it is not b!" << std::endl;
}
}