Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

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]

Удалено модератором


Наверх

Титульная страница Поиск, карта сайта Написать письмо