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

时间:2012-04-26 23:03:32

标签: c++ char operator-overloading

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

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

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

(其中setTag()std::stringchar重载。大部分用法都包括在内:

 Tag tag1 = std::string("lala");
 Tag tag2;
 tag2 = std::string("lala2");
 Tag tag3;
 tag3 = "lala";

然而,最“基本”的不计算:

 Tag tag4 = "lala";

它给了我这个错误:

 conversion from 'const char [5]' to non-scalar type 'Tag' requested

我该如何解决这个问题?我做错了什么?

1 个答案:

答案 0 :(得分:5)

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

Tag(char const* s);