一个跨语言的问题?
在C++中定义了一个抽象类,一些纯虚函数(一些回调函数)//在arm.dll中:
arm.h
class IArmNodeControllerSink
{
public:
virtual int ConnectConfirm(short result,ARMNodeID node_id) = 0;
virtual int DisconnectIndication(short reason) = 0;
virtual int TransportStatusIndication(short type,DWORD data) = 0;
};
extern "C"
{
void ATGetArmNodeController(char* serverAddress, IArmNodeController** ppArmNC);
};
能否在Delphi中重定义/继承实现它?
我的看法是不能,因为我不知道C++的类结构(此处是虚拟方法表)同Object pascal类结构是否相同?
如果可以是否是这样实现:
arm.pas
//在Delphi重定义IArmNodeControllerSink
type
IArmNodeControllerSink=TObject
public:
function ConnectConfirm(result:shor;node_id:ARMNodeID):int;abstract;
function DisconnectIndication(reason:short):int;abstract;
function TransportStatusIndication(type:short;data:DWORD):int;abstract;
end;
procedure ATGetArmNodeController(serverAddress:Pchar;pArmNC:^(^IArmNodeController));external "arm.dll";
//实现IArmNodeControllerSink
TArmClient=IArmNodeControllerSink
public:
procedure Constructor();
procedure Destructor();
function ConnectConfirm(result:short ; node_id:ARMNodeID):int;
function DisconnectIndication(reason:short) :int;
function TransportStatusIndication(type:short ;data:DWORD);int;
end;
请大家谈谈看法.