0

这是我的代码:CPP:

#include "../include/Enemy.h"

Enemy::Enemy(int X[], int Y[], int Type )
{

    x=X;
    y=Y;
    type=Type;
}

Enemy::~Enemy()
{
    //dtor
}

标题:

#ifndef ENEMY_H
#define ENEMY_H


class Enemy
{
    public:
        Enemy(int X[], int Y[], int Type );
        virtual ~Enemy();
    protected:
    private:
        int type;
        int x[], y[];

};

#endif // ENEMY_H

我收到以下错误:

||在构造函数'Enemy::Enemy(int*, int*, int)':| |6|错误: 'int*' 到 'int [0]' 的赋值中的类型不兼容| |7|错误: 'int*' 到 'int [0]' 的赋值中的类型不兼容| ||=== 构建完成:2 个错误,0 个警告(0 分钟,0 秒)===|

有人可以解释这是为什么以及如何解决它

4

2 回答 2

1

尝试替换这个:

int x[], y[];

经过:

int * x;
int * y;

它会起作用的。您的解决方案不起作用,因为当您为对象分配内存空间时,计算机必须确切知道应该分配多大的空间。创建对象时未定义 x[] 和 y[] 的大小。

于 2013-06-02T18:43:37.780 回答
0

猜猜你是在宽松模式下编译的,gcc 首先会和你一起玩扩展技巧。如果您添加 -pedantic 进行编译,它开始披露它将 x[] 视为应该被拒绝的 0 大小数组。

先修复那个部分,然后有问题再问。

于 2013-06-02T18:50:33.430 回答