boa*_*oaz 4 c++ operator-overloading
可能重复:
运算符重载
我没有发现任何可以帮助我解决这个问题的事情......我正试图过载<< operator,这是我的代码:
ostream& Complex::operator<<(ostream& out,const Complex& b){
out<<"("<<b.x<<","<<b.y<<")";
return out;
}
Run Code Online (Sandbox Code Playgroud)
这是H文件中的声明:
ostream& operator<<(ostream& out,const Complex& b);
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
error: std::ostream& Complex::operator<<(std::ostream&, const Complex&) must take exactly one argument
为什么我做错了?谢谢
Lol*_*4t0 10
在你的情况下,你operator <<应该是自由职能,而不是Complex集体成员.
如果你做了你的operator <<类成员,它实际上应该采用一个参数,应该是stream.但那你就不会写得像
std::cout << complex_number;
Run Code Online (Sandbox Code Playgroud)
但
complex_number << std::cout;
Run Code Online (Sandbox Code Playgroud)
这相当于
complex_number. operator << (std::cout);
Run Code Online (Sandbox Code Playgroud)
正如您所注意到的那样,这并不常见,这就是operator <<通常定义为自由函数的原因.