繁体   English   中英

在构建时针对不同rhs类型的C ++重载运算符=

[英]C++ overload operator= for different rhs types, at construction time

我写了一个类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

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

最后一个不是operator=() -您需要一个带有char const*的构造char const*

Tag(char const* s);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM