我正在学习c ++中的运算符重载,我想知道以下代码的输出
#include<iostream>
using namespace std;
class xyz
{
public:
int i;
friend ostream & operator<<( ostream & Out , int);
};
ostream & operator<<(ostream & out , int i)
{
cout<<10+i<<endl;
}
int main()
{
xyz A;
A.i=10;
cout<<10;
}
我有两个错误
错误:“ operator <<”的模棱两可的重载(操作数类型为“ std :: ostream {aka std :: basic_ostream}”和“ int”) cout << 10 + i;
错误:“ operator <<”的模棱两可的重载(操作数类型为“ std :: ostream {aka std :: basic_ostream}”和“ int”) cout << 10;
任何人都可以解释出什么问题吗?
我想知道,如果我重载一个“ <<”运算符以仅使用一个参数int(obvious)打印int,而我只想单独打印一个数字,如上面提到的“ cout << 10” int码。 因此,当我尝试仅打印任何整数时,编译器将如何决定应调用哪个函数。
答案 0 :(得分:2)
显然,问题在于您已经写了ostream & operator<<(ostream & out , int i)
。但是很明显,您要写的是这个
ostream& operator<<(ostream& out, const xyz& a) // overload for xyz not int
{
out<<a.i<<endl; // use out not cout
return out; // and don't forget to return out as well
}
还有这个
int main()
{
xyz A;
A.i=10;
cout<<A<<endl; // output A not 10
}
答案 1 :(得分:-1)
BuildConfig.VERSION_NAME