Z:\Coding\Cpp\iotest\main.cpp(23) : error C2248: 're' : cannot access private member declared in class 'Complex'
Z:\Coding\Cpp\iotest\main.cpp(6) : see declaration of 're'
Z:\Coding\Cpp\iotest\main.cpp(23) : error C2248: 'im' : cannot access private member declared in class 'Complex'
Z:\Coding\Cpp\iotest\main.cpp(7) : see declaration of 'im'
Здравствуйте, GarryIV, Вы писали:
GIV>Hello, O-Sam! GIV>You wrote on Mon, 19 Jul 2004 18:01:43 GMT:
O>> Читал книги. Видел много однотипных примеров. Везде написано делать так:
O>>
Не, все совсем не так
там дело в определении оператора << оно каким то образом не совпадает с задекларированным в классе 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);
J>Не, все совсем не так.
Именно так. Проблема была в том, что другом объявлялся оператор с одной сигнатурой, а реализация оператора имела другую сигнатуру.
Здравствуйте, javabear, Вы писали:
J>Не, все совсем не так J>там дело в определении оператора << оно каким то образом не совпадает с задекларированным в классе friend?
Ну так вот в этом-то оно и не совпадает — забыли поставить 'const' в определении оператора '<<'. Все правильно.
Здравствуйте, O-Sam, Вы писали:
B>>Приведенный пример прекрасно компилируется (Comeau, VC6). OS>Comeau — это что?
компилятор такой: http://www.comeaucomputing.com
OS>У меня (MSVC 6.0) выдается именно такая ошибка.
У меня тоже MSVC 6.0, и он компилит твой пример без проблем. Скорее всего, в твоем коде есть что-то, чего ты не привел здесь.
Здравствуйте, O-Sam, Вы писали:
B>>Приведенный пример прекрасно компилируется (Comeau, VC6). OS>Comeau — это что? У меня (MSVC 6.0) выдается именно такая ошибка.
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 12.00.8804 for 80x86
(MSVC 6.0)