从字符串到myclass的自动转换

时间:2013-06-18 17:32:41

标签: c++ conversion-operator

我已经定义了一个类

class Version
{
public:
        Version(std::string versionStr)
        {
            //do something
        }
}

我希望能够按照以下方式使用它

void foo(Version v1) {//do somthing};
void main()
{
    foo("test");
}

我希望v1成为一个对象,好像我已经完成了:

void main()
{
    Version v1("test");
    foo(v1);
}    

可能吗?

1 个答案:

答案 0 :(得分:3)

您拥有的代码具有太多级别的隐式构造。 "string literal"的类型为const char []不是 std::string。只有一级隐式构造会自动发生。尝试添加一个代替const char *的构造函数:

class Version {
    // ...
    Version(const char *_vstr) : versionStr(_vstr) {}
    // ...
}

Live demo.