我正在尝试重载C ++中的+运算符,但出现以下错误:  operator.cpp:在“ int main()”函数中:  operator.cpp:23:17:错误:初始化时无法将“运算符”转换为“整数”这是我的代码:#include <iostream>using namespace std;class Operators{ private: int num1; public: Operators(int num1){ this->num1 = num1; } Operators operator+(Operators o){ return Operators(num1 + o.num1); }};int main(){ Operators o1(5); Operators o2(10); Operators res = o1 + o2; // EDITED cout << res;}请你帮助我好吗?我知道,在这种情况下,重载它没有意义,就像我只能说5+10一样,但是我只是在做实验。更新谢谢,我已经编辑了int。但是现在我收到以下错误:  operator.cpp:在“ int main()”函数中:  operator.cpp:25:10:错误:匹配“ std :: cout   [...] (adsbygoogle = window.adsbygoogle || []).push({}); 最佳答案 这行的问题是:int res = o1 + o2;是您的operator +重载返回的是Operators类型的对象。这意味着您正在尝试初始化int(来自res)类型的临时目录(Operators的结果)的o1 + o2),但是没有用户定义的转换方式。这就是编译器发出错误的原因。您可以通过在Operators类中添加转换运算符来轻松解决此问题:operator int () const { return num1; }更新:看来您已经更新了问题。下面的第二行是有问题的:Operators res = o1 + o2;cout << res;除非您为operator <<类定义了Operators的重载,否则编译器将不知道选择哪个operator <<重载来流式传输Operators类型的对象。要解决此问题,您可以:如上所述,将转换运算符定义为int为operator <<定义Operators的重载,如下所示:friend std::ostream& operator << (std::ostream& o, Operators const& op){ o << op.num1; return o;}这是live example。关于c++ - 重载“+”运算符,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16133771/ (adsbygoogle = window.adsbygoogle || []).push({});
10-09 06:34