0

私はOpenGLとDirectXを使用しており、オブジェクト指向ゲームクラスの基本の開発を開始しました。現在のクラスの構造は次のとおりです。

オブジェクト
---|---アクター
---------|---ポーン
---------|---コントローラー

だから私は継承するPawnと継承するControllerクラスを持っています。ActorObject

問題はController、ポーンクラスのの参照とPawnコントローラークラスののインスタンスが必要なことです。
このため、私は前方宣言Pawnし、Controller次のようにしていActor.hます。

// Actor.h

// (...) Actor Declaration (...)

class Pawn;
class Controller;

そしてPawn.h

// Pawn.h

class Pawn : public Actor
{
private:
    Controller* controller;
public:
    void DoSomethingWithController(void);
}

これはすべて良いことであり、エラーはありません。問題は、そのクラスのメンバーにアクセスしたい場合です。

void Pawn::DoSomethingWithController(void)
{
    // this->controller-> can't access members like this (members not found)
}

では、PawnにControllerのポインターを設定し、ControllerにPawnのポインターを設定して、それらを異なるファイル(.hと.cpp)に保持し、同時にそのメンバーにアクセスできるようにするには、どうすればよいですか?

お時間をいただきありがとうございます。:D

[さらに情報が必要な場合は提供します]

4

1 に答える 1

5

前方宣言は、指定された型がさらに提供されることをコンパイラーに伝えます。コンパイラには、そのタイプのフィールドまたはメンバーに関する手がかりがありません。したがって、対応する.hファイルを.cppファイル(「controller」クラスのメンバーにアクセスする場所)にインクルードする必要があります。

于 2012-06-28T14:24:47.600 に答える