![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Указатель на шаблонный тип в шаблонном интерфейсе
ТС © (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;