我的程序包含一个类,这是它的简化形式:
单位.h:
#define fullwidth 200
#define fullheight 200
class Units
{
public:
[...]
void MovingUp(Units* Detector[fullwidth][fullheight], Units Self);
[...]
}
它定义了一个函数,该函数接受两个参数作为输入:“Units”对象的对象指针数组和一个特殊选择的“Units”对象。
这是主要部分:
#include "Units.h"
[...]
int i,j;
Units* DetectorField[fullwidth][fullheight];
Units Examples[20];
for (j=0;j<fullheight;j++)
{
for (i=0;i<fullwidth;i++)
{
DetectorField[i][j] = NULL;
}
}
它创建了“Units”中的函数所必需的“Units”对象指针数组,并在开始时将所有这些值设置为 NULL。
之后,我尝试通过一个随机选择的指针调用对象的函数。显然,如果指针指向 NULL,则调用是不可能的,但 Visual C++ 甚至在我运行程序之前就显示错误。
DetectorField[12][12]->MovingUp(DetectorField,DetectorField[12][12]);
对于这个版本,Visual C++ 在编译后写道: cannot convert parameter 2 from 'Units *' to 'Units' - 当然,因为DetectorField
它本身是一个指针数组。然后我尝试以这种方式引用它指向的对象:
DetectorField[12][12]->MovingUp(DetectorField,&DetectorField[12][12]);
MSVC 编译后写入:无法将参数 2 从 'Units **' 转换为 'Units'
我不清楚为什么第二个版本引用对象指针的指针,而不是对象。另外,我应该如何以正确的方式编写函数调用?