Controllerクラスオブジェクトへのポインターを持つSnakeクラスがあります。このポインターには、実行時にコントローラー(AIControllerなど)から派生したオブジェクトである新しいデータが割り当てられます。
コントローラークラス内でSnakeGetters/ Settersを呼び出すことができるように、コントローラーオブジェクトを作成するときにSnakeへのポインターを渡す必要があります。
その行で、以下のスニペットでフラグが立てられたSnakeコンストラクターで、次のエラーが発生します。
In constructor 'Snake::Snake()':|
error: expected type-specifier before 'PlayerController'|
error: cannot convert 'int*' to 'Controller*' in assignment|
error: expected ';' before 'PlayerController'|
スニペット:
Snake::Snake() : _xVelocity(0), _yVelocity(0)
{
_controller = new PlayerController(this);
Initialise();
}
ヘビは次のように定義されています。
class Controller;
class Snake
{
public:
Snake();
virtual ~Snake();
...
private:
...
Controller* _controller;
};
このようなコントローラー:
#include "Snake.hpp"
class Controller
{
public:
Controller(Snake* s);
~Controller();
protected:
...
Snake* _s;
};
およびPlayerControllerは次のようになります。
#include "Controller.hpp"
class PlayerController : public prg::IKeyEvent, public Controller
{
public:
PlayerController(Snake* s);
~PlayerController();
private:
virtual bool onKey (const prg::IKeyEvent::KeyEvent& key);
};
実行時にスネークに異なるコントローラーを割り当てることができるように、コントローラーオブジェクトへのポインターを使用する試みが正しいかどうかはわかりません。また、前方宣言を使用すると、何かが正しくないことがわかります。私は最初の回答に感謝し、エラーを提供することで私にもう少し情報を与えることができることを願っています。コンパイルプロセスを正しく理解できるように、引き続き問題のクリーンアップを試みますが、それまでの間、助けていただければ幸いです。