Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Переопределение конструктора формы


Автор: gray_k 19.2.2004, 14:33
Такой глюк.
Создаю в проекте форму, переопределяю её конструктор, например
-объявление
Код
__fastcall TForm2(TComponent* Owner, int a);

-реализация
Код
__fastcall TForm2::TForm2(TComponent* Owner, int a)
 : TForm(Owner)
{}

затем вызываю его
Код
 TForm2 *fm = new TForm2(this,1);

Компилится всё без проблем, но когда пытыюсь выполнить, то на строке с вызовом конструктора вываливается "Stack overflow"
confused.gif
Абсолютно непонятно, это у меня билдер проглючил, или для vcl не работает переопределение конструкторов?

Автор: Vyacheslav 19.2.2004, 16:08
Так делать НИЗЗЯ smile.gif
Дело в том, что конструктор с такими параметрами в таком порядке служит для служебных целей и его просто так переопределять нельзя. Если Вам очень хочется иметь конструктор с такими параметрами, то по крайней мере поменяйте параметры местами

__fastcall TForm2::TForm2(int a, TComponent* Owner)
: TForm(Owner)
{}

Автор: Vyacheslav 19.2.2004, 16:10
Вот кстати иллюстрация к выше сказанному
Код

#pragma option push -w-inl
/* TCustomForm.CreateNew */ inline __fastcall virtual TForm(Classes::TComponent* AOwner, int Dummy) : TCustomForm(AOwner, Dummy) { }
#pragma option pop

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)