C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Создание класса, потомка TObject, как сделать деструктор?
dragon_dp
Отправлено: 12.08.2006, 19:15


Ученик-кочегар

Группа: Участник
Сообщений: 3



Добрый день. Подскажите новичку.
пытаюсь сделать деструктор для потомка TObject, получаю сообщение:

virtual function 'MYCLASS::~MYCLASS()' conflicts with base 'TObject'

Если просто создать класс(не потомок) то такого сообщения нет.
CODE

class MYCLASS : public  TObject
{
public:
   MYCLASS(void);
   virtual ~MYCLASS();
private:
protected:
};

MYCLASS::MYCLASS(void):TObject()
{
}
MYCLASS::~MYCLASS()
{
}

Konstantine
Отправлено: 12.08.2006, 21:50


Мастер участка

Группа: Модератор
Сообщений: 545



"__fastcall" обязательный... а virtual — отставить!
CODE
class MYCLASS : public  TObject
{
public:
  __falstcall MYCLASS(void);
  __falstcall ~MYCLASS();
private:
protected:
};

__falstcall MYCLASS::MYCLASS(void):TObject()
{
}
__falstcall MYCLASS::~MYCLASS()
{
}
Shagg
Отправлено: 14.08.2006, 07:43


Дежурный стрелочник

Группа: Участник
Сообщений: 69



virtual отставить??? ohmy.gif как можно???
а ситуация вроде
CODE

TObject *p = new TMyClass();
delete p;

сколько памяти будет освобождено???
нет виртуальный деструктор — однозначно
olegenty
Отправлено: 14.08.2006, 07:59


Ветеран

Группа: Модератор
Сообщений: 2412



CodeGuerd'ом пройдись.

TObject — класс, нарушающий стандарт C++
Guest
Отправлено: 14.08.2006, 18:04


Не зарегистрирован







Работает
CODE

class MyClass : TObject
{
public:
__fastcall MyClass(void) : TObject() {ShowMessage("MyClass create");}
__fastcall virtual ~MyClass(void) {ShowMessage("MyClass destroy");}
};
MyClass *poi = new MyClass();
delete poi;


И так работает
CODE

class MyClass : TObject
{
public:
__fastcall MyClass(void); // : TObject() {ShowMessage("MyClass create");}
__fastcall virtual ~MyClass(void); // {ShowMessage("MyClass destroy");}
};

__fastcall MyClass::MyClass(void) : TObject() {ShowMessage("MyClass create");}
__fastcall MyClass::~MyClass(void) {ShowMessage("MyClass destroy");}

void __fastcall TForm1::Button10Click(TObject *Sender)
{
MyClass *poi = new MyClass();
delete poi;


Вернуться в Вопросы программирования в C++Builder