Форум: "Начинающим";
Текущий архив: 2017.01.15;
Скачать: [xml.tar.bz2];
ВнизClass functions Найти похожие ветки
← →
Token (2015-04-22 11:21) [0]Есть такая конструкция
TCommIntfObj = class(TInterfacedObject)
public
class function GetSetupFrameClass: TSetupFrameClass;
end;
TCommIntfObjClass=class of TCommIntfObj
TRS232 = class(TCommIntfObj)
public
class function GetSetupFrameClass: TSetupFrameClass;
end;
const
ComObjs=array [0..0] of TCommIntfObjClass = (TRS232)
....
begin
frmCls:=ComObj[0].GetSetupFrameClass
end
Какой метод будет вызван TCommIntfObj или TRS232?
← →
Token (2015-04-22 12:06) [1]Удалено модератором
← →
junglecat © (2015-04-22 12:38) [2]статические функции не наследуются
← →
icWasya © (2015-04-22 14:59) [3]Надо функцию сделать виртуальной.
← →
Ega23 © (2015-04-23 10:04) [4]
> статические функции не наследуются
чёй-та?
← →
DVM © (2015-04-23 10:18) [5]Это вообще не статические функции, а классовые.
← →
DVM © (2015-04-23 10:52) [6]
> Token (22.04.15 11:21)
Классовые методы же могут быть виртуальными.
Сделай так:
TCommIntfObj = class(TInterfacedObject)
public
class function GetSetupFrameClass: TSetupFrameClass; virtual;
end;
TCommIntfObjClass=class of TCommIntfObj
TRS232 = class(TCommIntfObj)
public
class function GetSetupFrameClass: TSetupFrameClass; override;
end;
И не ломай мозг себе и окружающим. Перекрывать невиртуальные методы вообще не очень хорошо, приводит к путанице.
← →
Token (2015-04-24 11:11) [7]Спасибо.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2017.01.15;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.047 c