Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.01.2009, 18:11   #1
Руслантус
Наркоман самоучка
Форумчанин
 
Аватар для Руслантус
 
Регистрация: 22.07.2007
Сообщений: 276
Радость Вопрос об дружественом операторе <<

Всем привет! При разработки своей библиотеки я столкнулся с одной проблемой, которую так и не смог

решить... Для начала опишу примерный код, чтобы вам было понятней:

\\MyObject .h

Код:
class ClassMyObject
{
	private:
		bool tmp;
	public:
		ClassMyObject();
           	~ClassMyObject();
		friend  ClassMyObject& operator << (ClassMyObject &_CMO, const bool _tmp);
};
\\MyObject .cpp

Код:
ClassMyObject::ClassMyObject() : tmp(0)
{
}

ClassMyObject::~ClassMyObject()
{
}

ClassMyObject& operator << (ClassMyObject &_CMO, const bool _tmp)
{
	tmp = _tmp;

	return _CMO;
}
В данном коде компилятор укажет на ошибку, что tmp не существует, потому-что он его не видит из класса, можно подумать, что это можно решить так:

Код:
ClassMyObject& ClassMyObject::operator << (ClassMyObject &_CMO, const bool _tmp)
Но компилятор пишет, что '<<' не является членом данного класса. Все эти проблемы идут от friend, но без него я обойтись не могу никак…

В общем как мне обойти данную проблему?
#include <мозг.h>
Руслантус вне форума Ответить с цитированием
Старый 21.01.2009, 19:01   #2
MaTBeu
Eclipse Foundation
Старожил
 
Аватар для MaTBeu
 
Регистрация: 19.09.2007
Сообщений: 2,604
По умолчанию

Код:
ClassMyObject& operator << (ClassMyObject &_CMO, const bool _tmp)
{
   _CMO.tmp = _tmp;
   return _CMO;
}
Правильно, откуда он узнает о том, что tmp существует? Вы же передаете ссылку на изменяемый объект. Вот по этой ссылке и нужно обратиться к члену класса - tmp.

Если бы перегружаемая функция была членом класса, то можно было бы написать что-то типа
Код:
this->tmp = _tmp;
//или еще вот так
tmp = _tmp;
return *this;

Последний раз редактировалось MaTBeu; 21.01.2009 в 19:03.
MaTBeu вне форума Ответить с цитированием
Старый 21.01.2009, 19:48   #3
Руслантус
Наркоман самоучка
Форумчанин
 
Аватар для Руслантус
 
Регистрация: 22.07.2007
Сообщений: 276
По умолчанию

точьно, что-то я ступил...) Спасибо за помощь!
#include <мозг.h>
Руслантус вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не проверяется логическое выражение в операторе While lsd11 Помощь студентам 2 15.10.2008 19:09
Вопрос наверное про функции, а так точно даже не знаю про что. (Вопрос начинющего #6) Albert2008 Общие вопросы Delphi 4 21.08.2008 15:33
вопрос по сокетам и общение как в ICQ.Сложный вопрос... Руслантус Общие вопросы C/C++ 2 12.08.2008 21:10
ошибка в операторе case wowka Помощь студентам 5 24.07.2008 11:47
Вопрос об операторе IF Лёка Общие вопросы Delphi 4 01.02.2008 22:33