我有一个有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在课堂上可以做到吗?我以类似的方式尝试过,但它显然失败了,因为类内的运算符不允许第二个参数.