3

Casts多数のキャスト関数を保持する名前空間を生成するとします。

namespace Casts
{
    // To string
    bool Cast(bool bValue,                 string& res);
    bool Cast(int intValue,                string& res);
    bool Cast(float floatValue,            string& res);
    bool Cast(const wstring& str,          string& res);

    // From string
    bool Cast(const string& strVal, bool& res);
    bool Cast(const string& strVal, int& res);
    bool Cast(const string& strVal, long& res);
    bool Cast(const string& strVal, float& res);

    // And lots of other casting functions of different types 
}

boost:lexical_castアプローチが本当に好きです。例えば:

bool Cast(int intValue, string& res)
{
    bool bRes = true;
    try { res = lexical_cast<string>(intValue); }
    catch(bad_lexical_cast &) { bRes = false; }
    return bRes;
}

Casts私の質問は、エレガントで統一された堅牢な方法で実装するための他の可能なアプローチはありますか? 私にとって理想的な方法は、ネイティブの軽量アプローチを採用することです。

4

1 に答える 1