class TField : public TButton
{
private:
...
public:
TField(TComponent* _own):TButton(_own){...}
};
Перегрузка стандартных компонентов
не могу перегрузить (а вернее наследовать) конструктор
Код:
ошибка
[C++ Error] Graphic.h(23): E2113 Virtual function 'TField::TField(TComponent *)' conflicts with base class 'TButton'
Код:
__fastcall TField(TComponent* _own):TButton(_own){...}
Так работает. Почему - не скажу, сам не знаю, а искать некогда. Похоже чего-то там с типами не сошлось. Если кто знает почему надо писать именно так, буду благодарен за обьяснение. :)
Цитата: FAngel
...Если кто знает почему надо писать именно так, буду благодарен за обьяснение. :)
A virtual function has the same argument types as one in a base class, but differs in one or more of the following:
Return type
Calling convention //для данного случая
Exception specification (throw list)
F1 почаще нажимай:)
Код:
virtual __fastcall TMyButton (TComponent *Owner): TButton (Owner)
{Что_То_Там();}
__fastcall TMyButton (HWND ParentWindow): TButton (ParentWindow)
{Что_То_Там();}
{Что_То_Там();}
__fastcall TMyButton (HWND ParentWindow): TButton (ParentWindow)
{Что_То_Там();}
Ошибка возникала из-за неявного указания виртуальности конструктора.
Второй конструктор, судя по справочнику, вызывается для создания кнопки в объектах, не являющихся VCL-компонентами. Например, в процессе экспорта из ДЛЛ
Цитата:
ParentWindow is the handle to a non-VCL window that hosts the button control This syntax is used, for example, when exporting the button from a dll.