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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.04.2011, 17:11   #1
mansp
Пользователь
 
Регистрация: 27.10.2010
Сообщений: 52
Вопрос BLOCK_TYPE_IS_VALID(pHead->nBlockUse)

Код:
#ifndef class_H
#define class_H

#include "stdafx.h"
#include "iostream"
#include "windows.h"
#include <string>
#include  <stdio.h>
#include  "define.h"

using namespace std;


class Animals
{
public:
	char *name;
	double weight;
	void print();
	Animals ();
	virtual~Animals();
	Animals(const Animals& a);
};

#endif
Код:
#include "stdafx.h"
#include "class.h"

void Animals::print()
{ 
	cout<<"\nname ";
	puts(name);
	cout<<"\nweight "<<weight;
}
Animals::Animals ()
{
	name = new char [NAME];
	strcpy(name,"имя");
	weight = 0;
}

Animals::~Animals()
{
	delete []name;	
}

Animals::Animals(const Animals& b)
{
	weight = b.weight;
	name =  new char [NAME];
	strcpy(name,b.name);


}
Код:
#include "stdafx.h"
#include "class.h"





int _tmain(int argc, _TCHAR* argv[])
{

setlocale(LC_ALL,"Russian");
Animals a;
a.print();
Animals b=a;
a.~Animals();
system("pause");
return 0;	
}
при компиляции ошибок нетно после запуска программы после того как программа останавливаетса вылетает ошибка
BLOCK_TYPE_IS_VALID(pHead->nBlockUse)
ника не могу понять где же у меня здесь проблемы... толи конструктор копирования толи деструктор...
mansp вне форума Ответить с цитированием
Старый 07.04.2011, 17:20   #2
onewho
Форумчанин
 
Регистрация: 29.09.2010
Сообщений: 636
По умолчанию

NAME чему равно?
a.~Animals(); убрать.
Код:
char *name;
double weight;
в закрытую часть
onewho вне форума Ответить с цитированием
Старый 07.04.2011, 17:32   #3
mansp
Пользователь
 
Регистрация: 27.10.2010
Сообщений: 52
По умолчанию

Цитата:
Сообщение от onewho Посмотреть сообщение
NAME чему равно?
a.~Animals(); убрать.
Код:
char *name;
double weight;
в закрытую часть
NAME у меня дефайном опредиляетса..
ок щас попробую так...
mansp вне форума Ответить с цитированием
Старый 07.04.2011, 17:34   #4
mansp
Пользователь
 
Регистрация: 27.10.2010
Сообщений: 52
По умолчанию

не помогло...
зачем убирать
a.~Animals()? да без этой строчки работает всё без ошибки ... но как же тода удалять без деструктора?

Последний раз редактировалось mansp; 07.04.2011 в 17:36.
mansp вне форума Ответить с цитированием
Старый 07.04.2011, 17:56   #5
onewho
Форумчанин
 
Регистрация: 29.09.2010
Сообщений: 636
По умолчанию

не в динамической памяти создаете чтоб удалять.
деструктор вызывается когда объект выходит из области видимости ( дошёл до конца блока)

а убирать затем чтоб не нарушать заповедь ООП - икапсуляцию !

Последний раз редактировалось onewho; 07.04.2011 в 17:59.
onewho вне форума Ответить с цитированием
Ответ


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