Форум: "Начинающим";
Текущий архив: 2009.05.31;
Скачать: [xml.tar.bz2];
ВнизПерегрузка конструкторов Найти похожие ветки
← →
Индеец © (2009-04-20 09:03) [0]Здравствуйте, вот есть такой класс:
T1=class(TPersistent)
public
constructor create;virtual;
.........
А хотелось бы в нем реализовать 2 конструктора: что- то вродеT1=class(TPersistent)
public
constructor create;virtual;
constructor create (sender:T1);.....
.........
Вот вопрос как правильно объявить конструктор ?
← →
Б (2009-04-20 09:06) [1]Override;
← →
Индеец © (2009-04-20 09:08) [2]пробовал
T1=class(TPersistent)
public
constructor create;virtual;
constructor create (sender:T1);override;
.........
E2170 Cannot override a non-virtual method
← →
Сергей М. © (2009-04-20 09:16) [3];virtual; overload;
override - это директива перекрытия твоего виртуального метода в наследниках твоего класса.
← →
Индеец © (2009-04-20 09:23) [4]
> ;virtual; overload;
>
> override - это директива перекрытия твоего виртуального
> метода в наследниках твоего класса.
Написал так:T1=class(TPersistent)
public
constructor create;virtual;
constructor create (sender:T1);virtual;overload;
...........
E2254 Overloaded procedure "create" must be marked with the "overload" directive
← →
Индеец © (2009-04-20 09:24) [5]Получилось так:
T1=class(TPersistent)
public
constructor create;overload;virtual;
constructor create (sender:Tlxtclass);overload;virtual;
........
← →
Palladin © (2009-04-20 11:51) [6]reintroduce
← →
Б (2009-04-20 12:37) [7]
> Б (20.04.09 09:06) [1]
> Override;
Перепутал с директивой перезагрузки: overload;
← →
Плохиш © (2009-04-20 15:05) [8]Хм, а в чём смысл виртуальности у конструктора?
← →
Ega23 © (2009-04-20 15:31) [9]
> Хм, а в чём смысл виртуальности у конструктора?TBaseObject = class (TObject)
public
constructor Create; virtual;
end;
TFirstObject = class (TBaseObject);
TSecondObject = class (TBaseObject);
TBaseObjectClass = class of TBaseObject;
function CreateObject(ObjectClass : TBaseObjectClass) : TBaseObject;
begin
Result := ObjectClass.Create;
end;
Теперь перекрываешь конструкторы TFirstObject и TSecondObject - и они отрабатывают при вызове CreateObject(TFirstObject) или CreateObject(TSecondObject)
← →
Palladin © (2009-04-20 16:15) [10]
> Плохиш © (20.04.09 15:05) [8]
хо хо... на них, виртуальных конструкторах, строится вся VCL... в купе с понятием того что класс сам по себе уже объект
← →
Palladin © (2009-04-20 16:16) [11]порой у меня возникает чувство, что не VCL писали на Делфи, а Делфи писали для VCL :)
← →
Плохиш © (2009-04-20 16:16) [12]
> Ega23 © (20.04.09 15:31) [9]
Мне реализация из CreateForm симпатичнее :-)
← →
Плохиш © (2009-04-20 16:24) [13]
> Palladin © (20.04.09 16:15) [10]
Хм, действительно, у компонентов конструкторы виртуальные :-)
← →
Ega23 © (2009-04-20 16:30) [14]
> Хм, действительно, у компонентов конструкторы виртуальные
> :-)
Ну правильно, а как ты иначе создавать из списка будешь?
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2009.05.31;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.007 c