0

** より意味をなすように言い換え

私には 3 つのクラスがあり、これらのクラスのインスタンスが、コントローラー オブジェクトを持つのではなく、相互に対話できるようにしたいと考えています。私が抱えている問題は、それらがお互いの.hファイルで定義されておらず、それを適切に行う方法がわからないことです。以下は説明するコードです。

ゲーム.cpp:

#include "game.h"
#include "Class - cEntity.h"
#include "Class - cGUI.h"

cGui *gui;

vector<cEntity*>    entities;

クラス - cEntity.h:

#include "game.h"
#include "Class - cGui.h"

extern cGui *gui;

class cEntity{
...
};

この構造を使用するコードをコンパイルすると、2 つのエラーが発生します。

エラー 7 エラー C2143: 構文エラー: ';' がありません 前 '*' c:\dropbox\of_v0.8.0_vs_release\apps\myapps\zombierts\src\entities.h 10

エラー 8 エラー C4430: 型指定子がありません - int と見なされます。注: C++ は default-int c:\dropbox\of_v0.8.0_vs_release\apps\myapps\zombierts\src\entities.h 10 をサポートしていません

誰が私が間違っているのかを明確にするのを助けることができますか?

ありがとう

4

3 に答える 3

0
  • 別のクラスのコンテナーにアクセスしようとしている場合は、さまざまな方法でこれを行うことができます。まず、すでに 2 つのクラスがある場合。cEntity のベクトルを public として宣言できます。Typedef std::vector cEntityType; を追加することもできます。cEntityType の関心;
  • cEntity ベクトルが public の場合、このベクトルを含むクラス インスタンスを作成できます。たとえば、C クラスです。C クラスのインスタンスを取得したら、それを呼び出して cEntity コンテナーにアクセスできます。c->interests または c.interests。これが機能するのは、C クラスのインスタンスを作成してから、そのパブリック クラスとパブリック変数にアクセスするためです。cEntity ベクターのコピーを作成します。
  • 一方、cEntity のベクトルをグローバルにして 1 つのコピーを作成しようとしている場合は、ベクトルを静的にすることができます。したがって、どこからでもアクセスでき、誰でも変更できます。
于 2013-08-21T00:43:00.333 に答える