1

我已经定义了一个类

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);
}    

那可能吗?

4

1 回答 1

3

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

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

现场演示。

于 2013-06-18T17:36:30.593 回答