Перегруженные операторы
От: Goradon  
Дата: 03.09.07 01:05
Оценка:
Почему при работе с перегруженными операторами объявленными как друзья в Visual C++ 6.0 нельзя напрямую работать с закрытыми членами через переданные объекты
Re: Перегруженные операторы
От: Bell Россия  
Дата: 03.09.07 06:56
Оценка:
Здравствуйте, Goradon, Вы писали:

G>Почему при работе с перегруженными операторами объявленными как друзья в Visual C++ 6.0 нельзя напрямую работать с закрытыми членами через переданные объекты


Пример кода и диагностику компилятора в студию.
Любите книгу — источник знаний (с) М.Горький
Re: Перегруженные операторы
От: Lorenzo_LAMAS  
Дата: 03.09.07 07:11
Оценка: 1 (1)
Здравствуйте, Goradon, Вы писали:

G>Почему при работе с перегруженными операторами объявленными как друзья в Visual C++ 6.0 нельзя напрямую работать с закрытыми членами через переданные объекты


Наверное, у тебя где-то есть using namespace std? Был такой баг у VC 6.0.
Of course, the code must be complete enough to compile and link.
Re[2]: Перегруженные операторы
От: Goradon  
Дата: 04.09.07 00:42
Оценка:
Здравствуйте, Lorenzo_LAMAS, Вы писали:

L_L>Здравствуйте, Goradon, Вы писали:


G>>Почему при работе с перегруженными операторами объявленными как друзья в Visual C++ 6.0 нельзя напрямую работать с закрытыми членами через переданные объекты


L_L>Наверное, у тебя где-то есть using namespace std? Был такой баг у VC 6.0.


G>А есть ли какая-нибудь "заплатка" на этот баг?
Re[2]: Перегруженные операторы
От: Goradon  
Дата: 04.09.07 00:59
Оценка:
Здравствуйте, Goradon, Вы писали:

G>Здравствуйте, Bell, Вы писали:


B>>Пример кода и диагностику компилятора в студию.


G> #include <iostream>

using namespace std;
class MyClass {
int num;
public:
MyClass() { num = 0; }
friend istream& operator >> (istream&, MyClass&);
};

int main() { return 0; }

istream& operator >> (istream& ins, MyClass& obj) {
ins >> obj.num; // error
}
Re[3]: Перегруженные операторы
От: Bell Россия  
Дата: 04.09.07 06:08
Оценка:
Здравствуйте, Goradon, Вы писали:

Да, проблема именно в using namespace std; в загловке.
Придется директиву using перенести в cpp-файл.
Кстати для повышения мотивации можно воспользоваться поиском по форуму на предмет "почему не нужно писать using namespace в заголовках".
Любите книгу — источник знаний (с) М.Горький
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.