我有一个类复杂,我想运算符<<可以打印其私有变量。
class complex
{
double re, im;
public:
friend ostream operator <<(ostream &out); // What's wrong?
};
有可能吗?
答案 0 :(得分:3)
您必须将两个参数传递给operator <<()
(对流对象的引用和一个要传输的对象),并且您通常希望return
引用传入的流所以你可以将输出传递给operator<<()
的另一个调用。所以你需要这样的东西:
friend ostream& operator <<(ostream &out, const complex& rhs);
答案 1 :(得分:1)
要输出的对象必须作为参数传递:
friend ostream& operator <<(ostream &out, const complex& obj);
然后,你必须实现这个功能,可能是这样的:
ostream& operator <<(ostream &out, const complex& obj)
{
out << obj.re << ";" << obj.im;
return out;
}
答案 2 :(得分:0)
是的,有可能但你在操作员参数列表中出错,有两个参数不是一个,一个用于ostream,编译器会自动识别它,在这里它必须是ostream,第二个将是类类型你将在cout&lt;&lt; cout<<Complex
cout是第一个参数,那么你应该使用这些代码它将起作用。
#include <ostream>
using std::ostream;
class Complex
{
public:
friend ostream &operator <<(ostream &out, Complex &cmplx)
{
out << cmplx.im << "\t" << cmplx.re;
return out;
}
private:
double re, im;
};
int main()
{
Complex complex;
cout<<complex;
return 0;
}
它会打印re
和im
的值。