1

https://stackoverflow.com/a/5094430/391104を参照してください。

//typedef enum {Unknown = -1 Linux=7, Apple=2, Windows=100} OS_type;
DEFINE_ENUM_WITH_STRING_CONVERSIONS(OS_type, (Linux)(Apple)(Windows))

int main()
{
    OS_type t = Windows;
    std::cout << ToString(t) << " " << ToString(Apple) << std::endl;
}

私が抱えている問題は次のとおりです。

1> OS_type はライブラリで定義されており、それを変更する権限がありません。

2>さらに、enumの値をカスタマイズ!

私は何をすべきか?

4

1 に答える 1

0

ストリーム出力演算子にオーバーロードを提供するだけです。

std::ostream& operator <<(std::ostream& dst, const OS_type& ostype)
{
    switch (ostype) {
        case Unknown: dst << "Unknown"; break;
        case Linux:   dst << "Linux"; break;
        case Apple:   dst << "Apple"; break;
        case Windows: dst << "Windows"; break;
        default:      dst << "invalid";
    }
    return dst;
}

今すぐできること:

int main()
{
    OS_type ostype = Apple;
    std::cout << ostype << '\n';
}
于 2013-06-13T15:22:06.053 に答える