在类c ++

时间:2015-08-08 11:03:41

标签: c++ class

最近我正在开发一个简单的游戏,游戏结构要求我声明许多类型的对象...并且为了使函数更容易处理,我为所有其他类创建了一个父类。这是整个代码的一部分(简化):

int q=500;
struct ship
{
    int x,y;
    bool dec=0;
};
struct enemysol : public ship
{
    int life=100,y=0,x;
    bool dec=0;
    void declare()
    {
        dec=1;
        x=10+rand()%(getmaxx()-20);
        life=100;
        y=0;
    }
};
int next(ship main[])   //finding next undeclared sol
{
    int i=1;
    while(main[i].dec)
    {
        i++;
        if(i==q)
            return -1;
    }
    return i;
}

问题是即使nexti函数也会返回enemysol.dec=1 当我没有声明ship时,这段代码有效,但如果我没有声明它,项目会非常混乱和大。

1 个答案:

答案 0 :(得分:2)

您使用错误的方法初始化enemysol类的成员变量。

当你写:

int life=100,y=0,x;
bool dec=0;

您声明新成员变量,其名称与ship中已有的x,y和dec相同。因此,每当您在enemysol类中使用x,y或dec时,您都不会引用船舶变量,因为这些变量是隐藏的。

正确的做法是:

struct enemysol : public ship
{
    int life;  // define only additional member variables not already in ship
    enemysol()  // constructor 
        : y(0), dec(false), life(100)   // init members
    {
    }
    void declare()
    {
        dec=1;
        x=10+rand()%(getmaxx()-20);
        life=100;
        y=0;
    }
};