小编var*_*gss的帖子

类内部枚举的运算符

我有一个有enum成员的班级.这些成员需要输出操作员.我知道如果enum在类之外如何实现operator :

enum Type
{
    SMALL=1,
    MIDDLE=2,
    LARGE=3
};

std::ostream& operator<<(std::ostream& out, const Type value){
    static std::map<Type, std::string> strings;
    if (strings.size() == 0){
        #define INSERT_ELEMENT(p) strings[p] = #p
        INSERT_ELEMENT(SMALL);     
        INSERT_ELEMENT(MIDDLE);     
        INSERT_ELEMENT(LARGE);             
        #undef INSERT_ELEMENT
    } 
    return out << strings[value];
}

class House
{
public:
    Type houseType;
    ...
};

int main(int argc, char** argv){
    House myhouse;
    std::cout << "This house is " << myhouse << std::endl;
    return 0;   
}
Run Code Online (Sandbox Code Playgroud)

enum在课堂上可以做到吗?我以类似的方式尝试过,但它显然失败了,因为类内的运算符不允许第二个参数.

c++ enums

2
推荐指数
1
解决办法
421
查看次数

标签 统计

c++ ×1

enums ×1