gpt4 book ai didi

delphi - Delphi抽象函数调用的名称与基类不同

转载 作者:行者123 更新时间:2023-12-03 19:05:26 24 4
gpt4 key购买 nike

说我有一个功能

function GetFieldName(FieldIndex: Integer; FieldName: PChar; 
Len: Integer): Integer; virtual; abstract;


我正在尝试添加

function GetFieldNameA(FieldIndex: Integer; FieldName: PAnsiChar; 
Len: Integer): Integer;


它将临时桥接我的数据库连接以获得unicode。

我想继续调用GetFieldName,使其不抽象,并进行一些类型转换以调用GetFieldNameA,这将成为第一个GetFieldName的技术抽象版本。 (我根本不想更改基类)

有没有办法像在外部引用中添加'name'关键字一样,在子类中使用一个具有不同名称的抽象函数?

我想象的最终结果是:

function GetFieldName(FieldIndex: Integer; FieldName: PChar; 
Len: Integer): Integer;
function GetFieldNameA(FieldIndex: Integer; FieldName: PAnsiChar;
Len: Integer): Integer name 'GetFieldName Virtual Abstract';

最佳答案

不,你不能做你想做的。

而是改写GetFieldName。在调用PChar之前,先将PAnsiChar转换为GetFieldNameA(如有必要)。后者不必(实际上也不能)标记为override。它可以是普通的非虚拟功能。

该建议的不幸部分是您必须在每个后代类中都这样做。另一种方法是将虚拟抽象GetFieldNameA添加到基类,然后更改所有后代以覆盖该抽象而不是GetFieldName。在基类中更改GetFieldName以调用GetFieldNameA。但是,如果您不能更改基类,那将是一个初学者。

关于delphi - Delphi抽象函数调用的名称与基类不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4899788/

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