我用
重载了string operator+(string a, string b);
当我这样做时它起作用:
string a = "3";
string b = "4";
cout << a + b;
然而,当我这样做时,它失败并出现错误信息:二进制表达式的无效操作数(const char *和const char *)
cout << "3" + "4";
有人可以告诉我如何解决这个问题吗?
感谢回复,我明白为什么会出现错误,我不应该在c ++中重载操作符是哪种操作数是内置类型。
答案 0 :(得分:4)
除非您将至少一个参数设置为用户定义的类型,否则您不能重载运算符,因此您所要求的是不可能的。但是,最接近您的语法可能是使用用户定义的文字。在C ++ 14中,s
后缀定义为创建std::string
。
using namespace std::string_literals;
std::cout << "3"s + "4"s;
如果您不能使用C ++ 14,但可以使用C ++ 11,那么您可以定义自己的文字后缀。
std::string operator""_s (const char* cs, size_t)
{
return std::string(cs);
}