Есть ли способ определить класс, который можно инициализировать, например, как это делает enum? - PullRequest
1 голос
/ 14 марта 2019

Есть ли способ определить класс, который можно инициализировать, например, как это делает 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;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...