我正在尝试在窗口窗体上创建一个六边形网格。
为此,我创建了一个带有头文件的"六边形"类,如下所示:
ref class Hexagon
{
public:
Hexagon(int X, int Y, int I, int J);
Hexagon();
private:
array<Point>^ vertices;
Point Centre;
int i, j;
public:
int GetX();
int GetY();
void SetCentre(int X, int Y);
void CalculateVertices();
array<Point>^ GetVertices();
void drawHexagon();
};
然后,我想有一个存储这些六边形的二维数组。 我这样做的尝试如下:
array<Hexagon^,2>^ Grid
但是我得到"具有静态存储持续时间的变量不能具有句柄或跟踪引用类型"
如何创建要添加六边形的 2D 数组?
ref 类声明一个由垃圾回收器管理的类。 C++/CLI 编译器应用于此类声明的一个强烈限制是此类不能包含非托管对象。 在压缩堆时移动对象时,结果通常很差,从而使指向此类非托管对象的非托管指针无效。
可能的麻烦制造者是Point
类型,没有其他候选人。 没有此问题的托管点类型的示例声明如下:
public value struct Point {
int x, y;
};
或者改用烘焙系统::D rawing::P oint 类型。