error c2679错误原因

qq_33935396 2016-04-01 11:46:11
#include<iostream>
using namespace std;
class Complex
{
private:
double real;
double image;
public:
Complex()
{
real=0;
image=0;
};
void setreal(double a)
{
real=a;
};
void setimag(double b)
{
image=b;
};
double getreal() const;
double getimag() const;
Complex comadd(const Complex &c);
Complex conminus(const Complex &c);
};
double Complex::getreal()const
{
return real;
}
double Complex::getimag()const
{
return image;
}
Complex Complex::comadd(const Complex &c)
{
Complex t;
t.real=c.getreal()+real;
t.image=c.getimag()+image;
return t;
}
Complex Complex::conminus(const Complex &c)
{
Complex p;
p.real=p.getreal()-real;
p.image=c.getimag()-image;
return p;
}
int main()
{
Complex z,x,y,m;
z.setreal(3);
z.setimag(2);
x.setreal(4);
x.setimag(1);
cout<<y.comadd(m)<<endl;
cout<<y.conminus(m)<<endl

return 0;
}
各位大神帮忙看一下红色区域为什么error C2679: binary '<<' : no operator defined which takes a right-hand operand of type 'class Complex' (or there is no acceptable conversion)
...全文
599 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
visoncomputer 2016-04-02
  • 打赏
  • 举报
回复
你这两个公有函数可以这样调用,但这两个公有函数返回的是一个类,但cout输出的一般是整型数,浮点型数之类的,没见过输出一个类这种类型的。
qq_33935396 2016-04-02
  • 打赏
  • 举报
回复
为什么不能?他是公有的啊。而且我要输出的就是comadd和cominus两个公有函数的结果
paschen 版主 2016-04-02
  • 打赏
  • 举报
回复
需要重载 operator<< ,否则编译器不知道如何去输出Complex这种类型
renwotao2009 2016-04-02
  • 打赏
  • 举报
回复
重载complex的operator<<
visoncomputer 2016-04-01
  • 打赏
  • 举报
回复
你这里不能直接输出Complex类型的变量,你首先需要搞清楚你要输出什么,然后用正确的格式给cout就可以了。

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧