![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Class functions
Token © (2015-04-22 11:21:00)Есть такая конструкция
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-24 11:11:00) [1]Спасибо.
DVM (2015-04-23 10:52:00) [2]
> 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;
И не ломай мозг себе и окружающим. Перекрывать невиртуальные методы вообще не очень хорошо, приводит к путанице.
DVM (2015-04-23 10:18:00) [3]Это вообще не статические функции, а классовые.
Ega23 (2015-04-23 10:04:00) [4]
> статические функции не наследуются
чёй-та?
icWasya (2015-04-22 14:59:00) [5]Надо функцию сделать виртуальной.
junglecat (2015-04-22 12:38:00) [6]статические функции не наследуются
Token (2015-04-22 12:06:00) [7]Удалено модератором