在Delphi FMX中
TStyledPresentation = class(TStyledControl)
方法定义为:
function GetModel<T: TDataModel>: T;
在C ++ hpp文件中:
template<typename T> T __fastcall GetModel(void);
I As::
function TStyledPresentation.GetModel<T>: T;
begin
Result := FModel as T;
end;
重写时,允许返回自定义模型,就像在TEdit中一样,如下所示:
function TCustomEdit.GetModel: TCustomEditModel;
begin
Result := GetModel<TCustomEditModel>;
end;
我已经在C ++ Builder中的.h文件中将其覆盖了:
HIDESBASE TAltorFMXEditModel* __fastcall GetModel(void)/* overload */;
并在.cpp文件中将其简化为:
TAltorFMXEditModel * __fastcall TAltorFMXEdit::GetModel(void)
{
return GetModel<TAltorFMXEditModel>;
}
但这不会构建或工作。
有人可以告诉我如何从C ++ Builder正确调用Delphi工厂方法吗?
答案 0 :(得分:1)
您写道:
return GetModel<TAltorFMXEditModel>;
但是这实际上需要调用函数时返回函数,并传递其返回值:
return GetModel<TAltorFMXEditModel>();
Delphi语法允许您在某些情况下省略函数调用parens,但C ++语法不允许这样做。
我希望C ++编译器会报告一条错误消息,指出这一点。