如何在 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;
特别是如果您要在代码中多次使用这种数组。但正如示例所示,即使没有这个它也应该可以工作。
我在 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;
特别是如果您要在代码中多次使用这种数组。但正如示例所示,即使没有这个它也应该可以工作。