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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.12.2009, 10:11   #1
novokhatsky
Новичок
Джуниор
 
Регистрация: 14.12.2009
Сообщений: 2
По умолчанию

Возникает сабж при попытке компиляции в Visual C++ 2008.

Вот сама функция, в которой вылезают ошибки:
Код:
void clearResult(ResultData &rez, InputData &inp)
{
	rez.exist = false;
	rez.min = 0;
	rez.minln = 0;
	
	if (rez.arrival != NULL)
		for (int i=0; i<inp.k; i++)
			for (int j=0; j<inp.k; j++)
				delete [] rez.arrival[i][j]; //error C2541: 'delete' : cannot delete objects that are not pointers
	
	delete [] rez.arrival;
	rez.arrival = NULL;

	if (rez.costs != NULL)
		for (int i=0; i<inp.k; i++)
			for (int j=0; j<inp.k; j++)
				delete [] rez.costs[i][j]; //error C2541: 'delete' : cannot delete objects that are not pointers

	delete [] rez.costs;
	rez.costs = NULL;

	if (rez.sumcosts != NULL)
		for (int i=0; i<inp.k; i++)
			delete [] rez.sumcosts[i]; //error C2541: 'delete' : cannot delete objects that are not pointers

	delete [] rez.sumcosts;
	rez.sumcosts = NULL;

	return;
}
почему так? ведь данные же передаются в функцию по ссылке..
да и строчки вида delete [] rez.arrival; не вызывают ошибки..

уважаемые гуру, помогите, пожалуйста, разобраться!

вот кусок из хэдера

Код:
	struct InputData
	{
		int n, k, b;
		int** chargesMatrix;
		bool exist;

		InputData(){
			n = 0;
			k = 0;
			b = 0;
			exist = false;
			chargesMatrix = NULL;
		}
		
		~InputData(){
		}
	};

	struct ResultData
	{
		int** costs;
		int** arrival;
		int* sumcosts;
		int min, minln;
		bool exist;
		
		ResultData()
		{
		exist = false;
		min = -1;
		minln = -1;
		costs = NULL;
		arrival = NULL;
		sumcosts = NULL;
		}
		~ResultData()
		{

		}
	};


	extern InputData inpData;
	extern ResultData rezData, rezDataEureka;

Последний раз редактировалось Stilet; 14.12.2009 в 10:24.
novokhatsky вне форума Ответить с цитированием
Старый 14.12.2009, 10:22   #2
ISergeyN
Maniac
Форумчанин
 
Аватар для ISergeyN
 
Регистрация: 03.01.2009
Сообщений: 450
По умолчанию

//error C2541: 'delete' : cannot delete objects that are not pointers
Код:
void clearResult(ResultData &rez, InputData &inp)
{
	rez.exist = false;
	rez.min = 0;
	rez.minln = 0;

	if (rez.arrival != NULL)
		for (int i=0; i<inp.k; i++)
				delete [] rez.arrival[i];
	delete [] rez.arrival;
	rez.arrival = NULL;

	if (rez.costs != NULL)
		for (int i=0; i<inp.k; i++)
				delete [] rez.costs[i];

	delete [] rez.costs;
	rez.costs = NULL;

	delete [] rez.sumcosts;
	rez.sumcosts = NULL;

	return;
}
Стандартные библиотеки разработаны с учетом многолетнего опыта лучших программистов и они не больны "детскими болезнями крутизны в программизме"....
ISergeyN вне форума Ответить с цитированием
Старый 14.12.2009, 10:25   #3
novokhatsky
Новичок
Джуниор
 
Регистрация: 14.12.2009
Сообщений: 2
По умолчанию

получилось! спасибо огромное!
novokhatsky вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Delete и Update crit БД в Delphi 58 18.05.2009 20:49
procedure Delete REztor Помощь студентам 6 10.03.2009 21:47
Перегрузка операций new, new[], delete, delete[] IgorKr Общие вопросы C/C++ 1 22.10.2008 12:14
new,delete alex87 Общие вопросы C/C++ 1 28.02.2008 17:50