我已经定义了一个类
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);
}
可能吗?
答案 0 :(得分:3)
您拥有的代码具有太多级别的隐式构造。 "string literal"
的类型为const char []
,不是 std::string
。只有一级隐式构造会自动发生。尝试添加一个代替const char *
的构造函数:
class Version {
// ...
Version(const char *_vstr) : versionStr(_vstr) {}
// ...
}