Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2017.02.05;
Скачать: [xml.tar.bz2];

Вниз

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

 
ТС   (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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.44 MB
Время: 0.001 c
1-1347622892
Docenko
2012-09-14 15:41
2017.02.05
Как использовать TIWExchangeBar (TMS IW)


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


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


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


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





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский