如何在 C++ 生成器中传递 DynamicArray

How to pass a DynamicArray in c++ builder

我在 VCL Win32 平台上使用 C++Builder XE4。我正在尝试设置一个将 TPoint 的 DynamicArray 作为参数的方法。下面是我的标准 VCL Win32 窗体的 .hpp 文件。我对 CalcPolygonDetail() 的声明生成错误消息:"Error in module NewForm: Incorrect method declaration in class TForm3_cpp" 问题是参数 DynamicArray MyPoints,有人可以展示如何正确设置此声明。谢谢。

#ifndef NewFormH
#define NewFormH
//----
#include <System.Classes.hpp>
#include <Vcl.Controls.hpp>
#include <Vcl.StdCtrls.hpp>
#include <Vcl.Forms.hpp>
#include "AdvSpin.hpp"
#include <Vcl.ComCtrls.hpp>
#include <Vcl.ExtCtrls.hpp>
#include <Vcl.Mask.hpp>


DynamicArray<TPoint> MyPoints;


//------------
class TForm3_cpp : public TForm
{
__published:    // IDE-managed Components
TImage *Image1;
TLabel *Label2;

----break----

int __fastcall CalcPolygonDetail(DynamicArray<TPoint>  MyPoints, bool UseScreenCoordinates );

.

这个简单的文件在 XE5 上可以很好地编译为控制台 VCL 应用程序。

#include <vcl.h>
#include <windows.h>

#pragma hdrstop
#pragma argsused

#include <tchar.h>

#include <stdio.h>

DynamicArray<System::Types::TPoint> MyPoints;

void __fastcall TestFunction(DynamicArray<System::Types::TPoint> MyPoints2, bool SomeOtherParam)
{
  // Do something with this.
  MyPoints = MyPoints2;
}

int _tmain(int argc, _TCHAR* argv[])
{
  DynamicArray<System::Types::TPoint> MyPoints3;
  TestFunction(MyPoints3, true);
    return 0;
}

这个编译对你来说没问题吗?也许问题出在其他地方,因为 DynamicArray 定义似乎是正确的。我会创建一个类型:

typedef DynamicArray<System::Types::TPoint> TMyPoints;

特别是如果您要在代码中多次使用这种数组。但正如示例所示,即使没有这个它也应该可以工作。