将'int *'赋值为'int [0]'时不会编译不兼容的类型

时间:2013-06-02 18:26:33

标签: c++ arrays

这是我的代码: 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秒)=== |

有人可以解释为什么会这样,以及如何解决它

2 个答案:

答案 0 :(得分:1)

尝试替换它:

int x[], y[];

由:

int * x;
int * y;

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

答案 1 :(得分:0)

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

首先修复该部分,然后仍有问题再次询问。