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 отставить??? как можно???
а ситуация вроде
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;
|
|
|