我有一个C ++类,我正在转换为Delphi,它有一个像这样的varargs成员函数:
class ICInterface {
virtual void printf(const char* fmt, ...) = 0;
};
我试图这样做以制作等效的Delphi代码,以便我可以从Delphi中调用它:
ICInterface = class
procedure printf(fmt : PAnsiChar); varargs; cdecl; abstract; virtual;
end;
但是当我编译时,它给了我错误:
[DCC Error] ICInterface.pas(9): E2169 Field definition not allowed after methods or properties
我做错了什么?
答案 0 :(得分:3)
你遇到了Delphi的一个怪癖。方法描述标签不能以任何顺序进入。 Virtual
必须在abstract
之前到来,我不确定其他两个。
此外,Delphi不允许您声明varargs
方法。该声明仅对从外部DLL导入varargs
例程有效。
答案 1 :(得分:0)
目前还不清楚你想做什么。
如果你需要Delphi模拟C ++代码
class ICInterface {
virtual void printf(const char* fmt, ...) = 0;
};
它是
ICInterface = class
procedure printf(fmt : PAnsiChar; const args: array of const); virtual; abstract;
end;
但它与C ++代码不是二进制兼容的。
如果你有一个用C ++编写的DLL导出C ++类,你不能直接在Delphi中使用这个DLL。