私はゲームを開発しようとしていますが、ゲーム オブジェクトの作成と破棄の管理に問題があり、複数の人からファクトリ パターンの使用を提案されました。私は行ってファクトリ パターンを読み、それを実装しようとしましたが、障害にぶつかりました。
// inside of EnemyGuy.h
#pragma once
#include "Entity.h"
#include "EntityFactory.h"
class EnemyGuy: public Entity {
public:
void update();
}
//inside of EnemyGuy.cpp
#include "EnemyGuy.h"
void EnemyGuy::update(){
if (you see player)
Entity* shotFired = EntityFactory::create("bullet", params);
}
// inside of EntityFactory.h
#pragma once
class Entity
#include "Bullet.h"
#include "EnemyGuy.h"
class EntityFactory{
public:
static Entity* create(const std::string passed, params);
}
// inside of EntityFactory.cpp
#include "EntityFactory.h"
static Entity* create(const std::string passed, params){
if (passed == "bullet")
return new Bullet(params);
if (passed == "enemyguy")
return new EnemyGuy(params);
}
ファクトリに EnemyGuy を含めてインスタンスを作成できるようにする必要があり、次に、EnemyGuy にファクトリを含めて create() メソッドを呼び出せるようにする必要があるため、循環依存エラーが発生します。
通常、前方宣言を使用して循環依存関係を解除しますが、この場合、前方宣言はそれを行いません。この問題を解決するにはどうすればよいですか?