C++重载operator =用于不同的rhs类型,在构造时

rom*_*ovs 1 c++ operator-overloading char

我写了一个类Tag,它将标签保存为字符串,并允许对其进行操作.为了便于使用,我正在重载operator=类似字符串的类型.到目前为止我得到了什么:

Tag& Tag::operator=(const std::string& rhs)
{
    setTag(rhs);
    return *this;
}

Tag& Tag::operator=(const char* rhs)
{
     setTag(rhs);
     return *this;
}
Run Code Online (Sandbox Code Playgroud)

(在哪里setTag()重载std::stringchar).大部分用法都包括在内:

 Tag tag1 = std::string("lala");
 Tag tag2;
 tag2 = std::string("lala2");
 Tag tag3;
 tag3 = "lala";
Run Code Online (Sandbox Code Playgroud)

然而,最"基本"的不计算:

 Tag tag4 = "lala";
Run Code Online (Sandbox Code Playgroud)

它给了我这个错误:

 conversion from 'const char [5]' to non-scalar type 'Tag' requested
Run Code Online (Sandbox Code Playgroud)

我怎样才能解决这个问题?我究竟做错了什么?

Mic*_*urr 5

最后一个不是operator=()- 你需要一个构造函数,需要一个char const*.

Tag(char const* s);
Run Code Online (Sandbox Code Playgroud)

  • 详细说,`ClassName objVar = someValue;`调用一个参数构造函数(相当于`ClassName objVar(someValue);`),而在创建对象后使用=调用`operator =`. (3认同)