C++ 中定義結構體,
struct CObjectInterface
{
virtual int __stdcall proc1(void);
virtual time_t __stdcall proc2(void);
//--- firewall config access
virtual int __stdcall func1(const int pos, double *acc);
virtual int __stdcall func2(const int pos);
virtual int __stdcall func3(const int pos,double *acc);
virtual int __stdcall func4(const int pos,const int shift);
}
Delphi 中如何定義啊
uj5u.com熱心網友回復:
直接宣告成介面,或者抽象類uj5u.com熱心網友回復:
這個應該是介面的宣告吧。。uj5u.com熱心網友回復:
在Delphi中宣告成介面好像不行吧,強制都是遵從COM規范,從IUnknown繼承下來的。如果是抽象類,C++中的struct又沒有虛表,所以...
下面提供參考,有大牛給過過眼,看是否可以這樣定義。
program Project1;
{$APPTYPE CONSOLE}
uses
Windows;
type
int = integer;
time_t = longint;
type
CObjectInterface = object
function proc1(): int;virtual;stdcall;abstract;
function proc2(): time_t;virtual;stdcall;abstract;
//--- firewall config access
function func1(const pos: int; acc: Pdouble): int;virtual;stdcall;abstract;
function func2(const pos: int): int;virtual;stdcall;abstract;
function func3(const pos: int; acc: Pdouble): int;virtual;stdcall;abstract;
function func4(const pos; const shift: int): int;virtual;stdcall;abstract;
end;
begin
{ TODO -oUser -cConsole Main : Insert code here }
end.
uj5u.com熱心網友回復:
從D7開始(還是D5?),介面就不必非得從IUnknown繼承了吧,可以從IInterface繼承uj5u.com熱心網友回復:
IUnknown其實只是IInterface的馬甲uj5u.com熱心網友回復:
C++的Sturct和Class除了成員默認公有私有之外沒區別.type
// C++有開關,Time_t可能映射為32位整數也可能映射為64位整數.你要自己去看下具體開關怎么設定的
Time_t = Int64;
CObjectInterface = class
function proc1(): Integer;virtual; stdcall; abstract;
function proc2(): Time_t; virtual; stdcall; abstract;
// --- firewall config access
function func1(const pos: Integer; acc: PDouble): Integer;virtual; stdcall; abstract;
function func2(const pos: Integer): Integer; virtual; stdcall; abstract;
function func3(const pos: Integer; acc: PDouble): Integer; virtual; stdcall; abstract;
function func4(const pos: Integer; shift: Integer): Integer;
virtual; stdcall; abstract;
end;
上面是C++物件,Delphi呼叫的封裝方式,如果是Delphi物件就把abstract去掉,自己實作一下
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/131947.html
下一篇:泛微8.1 表單欄位必填
