有没有一种方法可以定义可以像枚举一样初始化的类?

时间:2019-03-14 04:38:47

标签: c++ class enums

有没有一种方法可以定义可以像枚举一样初始化的类?

例如:

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;
    }
}

0 个答案:

没有答案