我编写了一个类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::string
和char
重载。大部分用法都包括在内:
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
我该如何解决这个问题?我做错了什么?
答案 0 :(得分:5)
最后一个不是operator=()
- 你需要一个带char const*
的构造函数。
Tag(char const* s);