如何从C ++ Builder调用Delphi FMX Factory方法

时间:2017-01-01 05:16:51

标签: delphi c++builder firemonkey

在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工厂方法吗?

1 个答案:

答案 0 :(得分:1)

您写道:

return GetModel<TAltorFMXEditModel>;

但是这实际上需要调用函数时返回函数,并传递其返回值:

return GetModel<TAltorFMXEditModel>();

Delphi语法允许您在某些情况下省略函数调用parens,但C ++语法不允许这样做。

我希望C ++编译器会报告一条错误消息,指出这一点。