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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.12.2008, 14:07   #1
Selebro
Пользователь
 
Аватар для Selebro
 
Регистрация: 18.10.2008
Сообщений: 31
По умолчанию operator= для NULL

как переопределить оператор равенства для структуры,если правый операнд это NULL?

например есть структура:

Код:
struct PointCPP
	{
		int X;
		int Y;
		bool Enabled;
		Turn Color;
		PointCPP *InArr;
        }
и есть объект PointCPP test;
то при
test.InArr=new PointCPP[4];
test.InArr=NULL;

не работает,пишет
Цитата:
Error 22 error C2679: binary '=' : no operator found which takes a right-hand operand of type 'int' (or there is no acceptable conversion) d:\lab\Point.cpp 37


попробывал написать

Код:
struct PointCPP
	{
		int X;
		int Y;
		bool Enabled;
		Turn Color;
		PointCPP *InArr;
		friend bool operator!=(const PointCPP& a, const PointCPP& b) 
		{
			return a.Enabled==b.Enabled&&a.InArr==b.InArr&&a.X==b.X&&a.Y==b.Y;
		}
		friend bool operator=(const PointCPP& a,const int& xp)
		{
			X=NULL;
			Y=NULL;
			Enabled=NULL;
			Color=None;
			InArr=NULL;
		}

	};
для != работает, для = 40 ошибок=)
Selebro вне форума Ответить с цитированием
Старый 14.12.2008, 15:26   #2
MaTBeu
Eclipse Foundation
Старожил
 
Аватар для MaTBeu
 
Регистрация: 19.09.2007
Сообщений: 2,604
По умолчанию

Хм... товарищ, а с каких пор операция присваивания возвращает булевое значение? К тому же вы return не дописали в нем.
И вообще
Код:
PointCpp &operator=(const int xp)
{
	if(!xp)
   	{
   		this.X=NULL;
   		this.Y=NULL;
   		this.Enabled=NULL;
   		this.Color=None;
   		this.InArr=NULL;
	}
   return *this;
}
Хотя... работать такое будет, только если xp = 0.
Для другой ситуации допишете сами.
MaTBeu вне форума Ответить с цитированием
Старый 14.12.2008, 16:29   #3
Selebro
Пользователь
 
Аватар для Selebro
 
Регистрация: 18.10.2008
Сообщений: 31
По умолчанию

с bool неправильно написал здесь (ИМХО спешил) в самой проге PointCPP написал....

спасибо за ответ!
Selebro вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Operator C++ EfiopianDIMON Общие вопросы C/C++ 1 13.12.2008 16:52
delete where fields=null??? Geddar SQL, базы данных 1 02.06.2008 16:57
Delphi 2007 и NULL nemaster21 Общие вопросы Delphi 14 23.04.2008 16:59
Delphi + dll= Invalid Pointer Operator LEKA Общие вопросы Delphi 4 01.05.2007 23:38