如何在c ++ builder中传递DynamicArray

时间:2015-03-17 21:05:53

标签: c++builder

我正在使用C ++ Builder XE4和VCL Win32平台。我想设置一个将TPoint的DynamicArray作为参数的方法。以下是我的.hpp文件中的标准VCL Win32表单。我对CalcPolygonDetail()的声明正在生成错误消息:“模块NewForm中的错误:类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 );

1 个答案:

答案 0 :(得分:0)

这个简单的文件可以很好地编译为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;

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