-1

私はメインクラスのゲームを手に入れました:

ゲーム.h:

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

ゲーム.cpp:

クラス配列の変数を埋めるだけで、何も面白くありません

Galaxian.h:

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

Galaxian.cpp:

これが私の問題です: Game クラスから galaxians 配列にアクセスしたいのですが、方法がわかりません! game::galaxians を試すと、「非静的メンバー参照は特定のオブジェクトに関連している必要があります」というエラーが表示されます

私が達成しようとしているのは、その配列をループして、その中の各キーの値を変更できることです。

どうやってやるの?

4

3 に答える 3

2

これは、galaxiansメンバーがインスタンス メンバーであり、クラス (つまり、静的ではない) メンバーではないためです。Game(1)にアクセスする必要がある時点でのインスタンスを使用可能にするgalaxiansか、(2)galaxians静的メンバーを作成する必要があります。

最初の方法を決定する場合は、シングルトンGameを作成することを検討してください。2 番目の方法を選択する場合は、配列をヘッダー ファイルで宣言するだけでなく、cpp ファイルで定義することを忘れないでください。galaxiansstatic

于 2012-09-23T12:27:18.520 に答える
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

どちらを選択するかは、ロジックによって異なります。

于 2012-09-23T12:27:05.263 に答える
1

のインスタンスにアクセスする必要がありますGame:

Game g;
g.galaxians[3][4] = ....;
于 2012-09-23T12:27:38.813 に答える