gpt4 book ai didi

c++ - OOP C++ 第一次编译错误

转载 作者:搜寻专家 更新时间:2023-10-31 00:41:40 24 4
gpt4 key购买 nike

请帮助这个新手,这是我的代码:

#include <iostream>
using namespace std;

class Complex {
private:
float r, i;

public:
Complex(float rr, float ii) : r(rr), i (ii) {}
float GiveRe () { return r; }
float GiveIm () { return i; }
void Setit (float rr, float ii) {
r = rr;
i = ii;
}
};

Complex a(10, 20);

Complex sumit (Complex &ref) {
static Complex sum (0, 0);
sum.Setit(sum.GiveRe() + ref.GiveRe(), sum.GiveIm() + ref.GiveIm());
return sum;
}

int main () {
Complex sumvalue = sumit (a);
cout << sumvalue << endl;
return 0;
}

错误:no match for 'operator<<' in 'std::cout << sumvalue' .

程序应该输出一个复数的和。

最佳答案

cout 不能告诉你想要输出什么,你需要在类中指定运算符<<或者使隐式转换你的类成为兼容类型成为可能。

http://www.cplusplus.com/reference/iostream/ostream/operator%3C%3C/

Rudolf Mühlbauer 的代码在您的类(class)中实现:

在类头的某处添加:

friend ostream& operator<<(ostream& out, const Complex& compl);

标题下方:

ostream& operator<<(ostream& out, const Complex& compl)
{
return out << compl.r << "/" << compl.i;
}

应更改实现以满足您的确切需求。

关于c++ - OOP C++ 第一次编译错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12876679/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com