![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Зачем в классу при обявлении интерфейса нужна реализация IUnknown [D5, Win95/98, WinME, Win2k, WinXP]
Erik1 © (2004-06-10 11:03:00)Вобщем хочу я к наследнику от TThread приделать интерфейс IAttribut, для использования внутри Delphi. А мне компилятор выдает ошибку Undeclared identifier: 'QueryInterface' и тд. Что реализацию придется писать?
Romkin (2004-06-10 11:49:00) [1]Не хочется - реализуй три метода IUnknown. Подсмотреть можно в TInterfacedObject.
Примечание: Сразу говорю: передавать интерфейсы между потоками просто так нельзя, сразу получишь катастрофическую ошибку.
Erik1 (2004-06-10 11:27:00) [2]Вобщето я так описал:
IAttribut = interface
['{5236A8EF-F36F-4E5B-876F-1640311F2099}']
function GetID: Integer;
function GetDescription: String;
function GetGrupp: Integer;
end;
TCustomThread = class(TThread, IAttribut)
private
...
function GetID: Integer;
function GetDescription: String;
function GetGrupp: Integer;
emd;
Нехочется наследоватся от TInterfacedObject.
Digitman (2004-06-10 11:13:00) [3]
> Вобщем хочу я к наследнику от TThread приделать интерфейс
> IAttribut
добавлю - "..и еще хочу заработать себе впоследствии геморрой с такой реализацией"
IAttribut = interface;
TMyClass = class(TInterfacedObject, IAttribut)
..
FThread: TMyThread;
..
end;
Clickmaker (2004-06-10 11:05:00) [4]type
IAttribut = interface(IUnknown);