C ++来自另一个类的Access类数组

时间:2012-09-23 12:23:54

标签: c++ class

我得到了我的主要课程游戏:

Game.h:

class Game{
public:
    Galaxian galaxians[6][10];
};

Game.cpp:

没有什么有趣的,只是填充类数组的变量

Galaxian.h:

class Galaxian{
public:
   void update();
};

Galaxian.cpp:

这是我的问题:我想从Game类访问galaxians数组,但我不知道怎么做!当我尝试游戏:: galaxians时,我收到错误“非静态成员引用必须与特定对象相关”

我想要完成的是我可以循环播放该数组并更改其中每个键的值。

我该怎么做?

3 个答案:

答案 0 :(得分:2)

这是因为galaxians成员是实例成员,而不是类(即非静态)成员。您应该(1)在您需要访问Game的位置创建galaxians的实例,或者(2)使galaxians成为静态成员。

如果您决定采用第一种方式,请考虑将Game设为单身;如果您决定采用第二种方式,除了在头文件中声明galaxians之外,不要忘记在cpp文件中定义您的static数组。

答案 1 :(得分:1)

static成员绑定到类的实例,而不是类本身。这是一般的OO,不是C ++特有的。因此,您要么绑定对象的访问权限,要么将成员绑定到类:

Game g;       //create an object of the class
g.galaxians;  //access the member through the object

class Game{
public:
    static Galaxian galaxians[6][10];  //bind the member to the class
};

//...

Game::galaxians;  //access it through the class

您选择哪一个取决于您的逻辑。

答案 2 :(得分:1)

您需要访问Game的实例:

Game g;
g.galaxians[3][4] = ....;