gpt4 book ai didi

c++ - 将 C++ 类转换为 Delphi

转载 作者:太空狗 更新时间:2023-10-29 21:51:06 25 4
gpt4 key购买 nike

我正在将一些 C++ 代码翻译成 Delphi,并且有一些抽象类需要翻译。这些类用作参数/返回类型等,我的问题是 C++ 类层次结构是否像这样:

class Thing {
virtual void blah() = 0;
};

class Thing2 : public Thing {
virtual bool asdf(Thing*) = 0;
};

可以在Delphi中重写为:

Thing = class
procedure blah; virtual;
end;

Thing2 = class(Thing)
function asdf(Thing) : Boolean; virtual;
end;

Delphi 代码可以调用采用 C++ Thing*s 和东西的 C++ 函数,C++ 代码可以调用采用 Delphi Things 等的 Delphi 函数。所以基本上,如果进行了上述转换,C++ Thing2* 是否等于一个 Delphi Thing2,Delphi 可以在其中调用它的方法等?

最佳答案

不完全是。在 C++ 中,将方法标记为 = 0 表示它是一个抽象方法。在 Delphi 中,要获得相同的效果,您必须将其标记为 virtual; abstract;,不仅仅是virtual;

此外,在 Delphi 中,如果您将类成员声明紧跟在类名下,默认情况下它将被声明为 published,这意味着它是公共(public)的,并且会为其生成 RTTI。这可能不是您的本意,因此请先声明可见性范围(private、protectedpublic):

Thing = class
public
procedure blah; virtual; abstract;
end;

Thing2 = class(Thing)
public
function asdf(Thing) : Boolean; virtual; abstract;
end;

关于c++ - 将 C++ 类转换为 Delphi,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4415082/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com