gpt4 book ai didi

C++ | cout, 打印返回的对象

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:15:18 29 4
gpt4 key购买 nike

我遇到了一个问题,我无法通过 cout 打印返回的对象。

我觉得很难描述,所以我写了一个非常基本的程序来展示我的问题。

编译器说 Type mismatch in operator<<.

重载的+返回一个Integer对象,为什么打印不出来?

"测试.cpp"

#include <iostream>
#include "Integer.h"
using namespace std;
int main() {
Integer int1(5);
Integer int2(2);
cout << (int1 + int2) << endl; // Here it fails
cout << int2 << endl; // Works
return 0;
}

“整数.cpp”

#include "Integer.h"
Integer::Integer(int integer) {
this->integer = integer;
}
int Integer::get_integer()
return integer;
}
Integer Integer::operator +(Integer& integer) {
return Integer(this->integer + integer.get_integer());
}
ostream& operator<<(ostream& output, Integer& integer) {
output << integer.get_integer();
return output;
}

“整数.h”

#include <iostream>
using namespace std;
class Integer {
private:
int integer;
public:
Integer(int integer);
int get_integer();
Integer operator+(Integer& integer);
};
ostream& operator<<(ostream& output, Integer& integer);

提前致谢

最佳答案

将临时对象绑定(bind)到非常量引用是非法的:

cout << (int1 + int2) << endl; // The result of the '+' is temporary object.

要更正,请更改您的 operator<< 的参数到 const Integer& :

ostream& operator<<(ostream& output, const Integer& integer);
//^^^^^

关于C++ | cout, 打印返回的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20411092/

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