Есть класс для которого перегружаются операторы,
обозначаю как friend, но компилятор VC кричит что в определении идет доступ к private переменным (ну так конечно же!) и не компилит:(
Перенёс определения в inline всё заработало, но все же не хочет их применять по отношению к этому классу:(
ps: Проделывал то же самое в Builder'e там работает.
Здравствуйте moroz, 27.04.2001 00:53:38 вы писали:
>Есть класс для которого перегружаются операторы, >обозначаю как friend, но компилятор VC кричит что в определении идет доступ к private переменным (ну так конечно же!) и не компилит:( >Перенёс определения в inline всё заработало, но все же не хочет их применять по отношению к этому классу:( > >ps: Проделывал то же самое в Builder'e там работает. > >Объясните это компиллер дерьмо или я не всё учёл?
приведи пример исходного текста
а то что-то не совсем понятно
Здравствуйте moroz, 27.04.2001 00:53:38 вы писали:
>Есть класс для которого перегружаются операторы, >обозначаю как friend, но компилятор VC кричит что в определении идет доступ к private переменным (ну так конечно же!) и не компилит:( >Перенёс определения в inline всё заработало, но все же не хочет их применять по отношению к этому классу:( > >ps: Проделывал то же самое в Builder'e там работает. > >Объясните это компиллер дерьмо или я не всё учёл?
В одной из конференций писали, что нужен SP3 и выше. После установки все работает.
Здравствуйте willi, 27.04.2001 06:29:28 вы писали:
>операторы << >> должны быть friend-ами, но не member-ами >а у тебя они были member-ами
Спасибо, загнался я....:(((0
Здравствуйте willi, 27.04.2001 06:29:28 вы писали:
Стоит только заменить инклюды на:
#include <iostream>
using namespace std;
как тут же появятся те проблемы о которых я говорил :)
>вот полностью работающий пример > >#include "string.h" >#include "iostream.h" > >class CMyClass
[skip] >} > >операторы << >> должны быть friend-ами, но не member-ами >а у тебя они были member-ами
OK!
Здравствуйте Moroz, вы писали:
M>Здравствуйте willi, 27.04.2001 06:29:28 вы писали:
M>Стоит только заменить инклюды на: M>#include <iostream> M>using namespace std; M>как тут же появятся те проблемы о которых я говорил :)
Мда-а-а.
А ведь и правда проблемы. Ты прав.
Но и эти проблемы тоже можно решить.
Просто компилятор опять не может толком разобраться что за операторы << и >>.
Чтобы ему все стало понятно, надо добавить три волшебные строчки перед описанием CMyClass :)
#include <string.h>
#include <iostream>
using namespace std;
// вот эти волшебные строчки
class CMyClass;
ostream& operator<<(ostream& stream, const CMyClass& SaveObj);
istream& operator>>(istream& stream, CMyClass& LoadObj);
Здравствуйте Черневич Василий Болеславович, вы писали:
ЧВБ>Но и эти проблемы тоже можно решить. ЧВБ>Просто компилятор опять не может толком разобраться что за операторы << и >>. ЧВБ>Чтобы ему все стало понятно, надо добавить три волшебные строчки перед описанием CMyClass :)
Так-то оно так, но позавидуешь Борланду (Builder) у них такие проблемы не возникают
ЧВБ>Успехов.