Текущий архив: 2003.10.16;
Скачать: CL | DM;
Вниз
Помогите с ООП Найти похожие ветки
← →
_qq (2003-10-07 12:42) [0]Есть такой код:
TBaseClass = class
.
.
constructor Create;
end;
TClass1 = class(TBaseClass)
.
.
constructor Create;
end;
TClassOf = class of TBaseClass;
.
.
constructor TBaseClass.Create;
begin
inherited ;
MessageDlg("This is TBaseClass", mtWarning, [mbOK], 0);
end;
constructor TClass1.Create;
begin
inherited ;
MessageDlg("This is TClass1", mtWarning, [mbOK], 0);
end;
procedure CreateNew(T: TClassOf);
begin
T.Create;
end;
Вызываем CreateNew вот так:
CreateNew(TClass1);
а вызывается конструктор TBaseClass.Create. (В смысле конструктор TClass1.Create НЕ вызывается вообще).
Что не так? А как так?
← →
Семен Сорокин © (2003-10-07 12:44) [1]Что не так?
TClassOf = class of TBaseClass;
А как так?
TClassOf = class of TClass1;
← →
PVOzerski © (2003-10-07 12:44) [2]конструктор TBaseClass.Create сделайте virtual, TClass1.Create - override.
← →
Skier © (2003-10-07 12:45) [3]>_qq (07.10.03 12:42)
А такие "слова" как virtual и override не пытался использовать ?
← →
Семен Сорокин © (2003-10-07 12:47) [4]Проглядел, да virtual конечно нужен в базовом классе
← →
Reindeer Moss Eater © (2003-10-07 12:47) [5]TBaseClass наследник TObject.
У него конструктор статический.
То есть вызов конструктора зависит от ТИПА переменной Т и не завсит от того, на экземпляр какого класса она указывает.
← →
_qq (2003-10-07 12:52) [6]Many thanx.
Проглядел описание конструктора для TBaseClass (оно у меня в коде отсутствовало).
Сорри что отвлек.
Страницы: 1 вся ветка
Текущий архив: 2003.10.16;
Скачать: CL | DM;
Память: 0.47 MB
Время: 0.019 c