В частности есть такой класс:
- Код: Выделить всё
- #ifndef __cplusplus
 typedef struct tagPROTO_INTERFACE_VTBL
 {
 HANDLE ( *AddToList )( struct tagPROTO_INTERFACE*, int flags, PROTOSEARCHRESULT* psr );
 //куча ссылок на функции
 }
 PROTO_INTERFACE_VTBL;
 #endif
 typedef struct tagPROTO_INTERFACE
 {
 #ifndef __cplusplus
 PROTO_INTERFACE_VTBL* vtbl;
 #endif
 int m_iStatus,
 //другие поля
 #ifdef __cplusplus
 virtual HANDLE __cdecl AddToList( int flags, PROTOSEARCHRESULT* psr ) = 0;
 //еще куча чисто виртульных методов
 #endif
 }
 PROTO_INTERFACE;
Можно заметить что tagPROTO_INTERFACE_VTBL - это как раз таблица виртуальных методов. На сколько это совместимо в FPC если я буду писать примерно так:
- Код: Выделить всё
- TPROTO_INTERFACE = object
 iStatus :int;
 //остальные поля
 function AddToList (flags:int; var psr:TPROTOSEARCHRESULT):THANDLE; cdecl; virtual; abstract;
 //остальные методы
 end;
наследовать этот объект, и передавать ссылку на потомка в с++ ный код. Сработает?







