Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2017.02.05;
Скачать: CL | DM;

Вниз

Указатель на шаблонный тип в шаблонном интерфейсе   Найти похожие ветки 

 
ТС   (2012-09-20 12:34) [0]


 IMyInterface<TType> = interface
   function GetElementPtr: ^TType; stdcall; // E2029 Identifier expected but "^" found
 end;

 TMyClass<TType> = class(TInterfacedObject, IMyInterface<TType>)
 public type
   PType = ^TType; // В классе можно определить вложенный тип...
 strict protected
   function GetElementPtr: PType; stdcall; // ...и использовать его
 end;


Вопрос, собственно вот в чем: Как в шаблонах интерфейсов прописывать "указатель на шаблонный тип (TType)"?


 
ТС   (2012-09-20 13:00) [1]

Есть вот такое решение, но какое-то оно не очень веселое:

 TDummyAncestor<TType> = class
 public type
   PType = ^TType;
 end;

 IMyInterface<TType> = interface
   function GetElementPtr: TDummyAncestor<TType>.PType; stdcall;
 end;

 TMyClass<TType> = class(TInterfacedObject, IMyInterface<TType>)
 strict protected
   function GetElementPtr: TDummyAncestor<TType>.PType; stdcall;
 end;


 
ТС   (2012-09-20 13:17) [2]

Впрочем, сделал вспомогательный шаблон, закинул его в общий модуль, пусть валяется...

TPtr<TType> = class
public type
  PType = ^TType;
end;


Теперь в любом месте:

TTemplate<TType> = class
 function GetSomething: TPtr<TType>.PType;
end;


или

ITemplate<TType> = interface
 function GetSomething: TPtr<TType>.PType;
end;


Такие вот пироги...


 
ТС   (2012-09-20 13:19) [3]

Но если у кого-то есть решение получше, буду рад узнать.



Страницы: 1 вся ветка

Текущий архив: 2017.02.05;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.004 c
1-1348130067
ТС
2012-09-20 12:34
2017.02.05
Указатель на шаблонный тип в шаблонном интерфейсе


2-1433112204
Германн
2015-06-01 01:43
2017.02.05
IPersistFile::Save method


15-1457597209
Pavia
2016-03-10 11:06
2017.02.05
Учебник по HTML и CSS


8-1240415648
noH@ker
2009-04-22 19:54
2017.02.05
Кеширование графиков большого объема


1-1347622892
Docenko
2012-09-14 15:41
2017.02.05
Как использовать TIWExchangeBar (TMS IW)