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

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

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


ТС ©   (2012-09-20 12:34:00) 


 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:19:00) [1]

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


ТС   (2012-09-20 13:17:00) [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:00:00) [3]

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

 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;


Наверх

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