Здравствуйте, GarryIV, Вы писали:
GIV>Hello, O-Sam!
GIV>You wrote on Mon, 19 Jul 2004 18:01:43 GMT:
O>> Читал книги. Видел много однотипных примеров. Везде написано делать так:
O>> O>> #include <iostream>
O>> using namespace std;
O>> class Complex
O>> {
O>> double re;
O>> double im;
O>> public:
O>> Complex (double re, double im);
O>> friend ostream& operator<< (ostream& s, const Complex& z);
O>> };
O>> Complex::Complex (double re, double im)
O>> {
O>> this->re = re;
O>> this->im = im;
O>> }
O>> ostream& operator<< (ostream& s, const Complex& z)
O>> {
O>> return s << '(' << z.re << ',' << z.im << ')';
O>> }
GIV>
GIV>With best regards, Igor Evgrafov.
Не, все совсем не так
там дело в определении оператора << оно каким то образом не совпадает с задекларированным в классе friend?
Тем не менее если убрать using namespace std и везде где нодо прописать std:: то все работает
#include <iostream>
using namespace std;
class Complex
{
friend std::ostream& operator<< (std::ostream& s,const Complex& z);
double re;
double im;
public:
Complex (double re, double im);
};
Complex::Complex (double re, double im)
{
this->re = re;
this->im = im;
}
std::ostream& operator<< (std::ostream& s, const Complex& z)
{
return s << '(' << z.re << ',' << z.im << ')';
}