저는 게임 엔진을 만들고 있는데, 몇 가지를 재구성하려고합니다. 즉 엔진의 주요 구성 요소 (오디오, 비디오, 키보드/마우스 IO 등)를 관리하는 EngineManager
입니다. 차례로 메시지를 보내드립니다 이벤트 처리 (SDL에서) 이러한 다양한 구성 요소를 통해 데이터를 전송하는 클라이언트로 EngineManager
을 사용하는 것입니다 당신이 경우여러 서버가 잘못된 디자인을 가리키는 클라이언트를 사용하고 있습니까?
이의 주요 구현 아이디어는을 정리 뒤로. 정신을 피하기 위해, 나는 다음과 같은 구현이 :
구성을
class Config
{
public:
Config(const EngineManager* engine, const Controls* controls);
~Config(void);
//More functions
private:
Controls** mControls;
EngineManager** mEngine;
//More functions/class members
};
Config::Config(const EngineManager* engine, const Controls* controls)
: mControls(controls),
mEngine(engine),
mIsInitialized(false)
{
}
Config::~Config(void)
{
delete mControls;
delete mEngine;
}
EngineManager
class EngineManager
{
public:
EngineManager(void);
~EngineManager(void);
//More functions/class members
private:
Controls* mControls;
Config* mConfig;
//More functions/class members
};
EngineManager::EngineManager(void)
: mControls(new Controls(this)),
mConfig(new Config(this, mControls)),
mEvent(new SDL_Event)
{
Init();
}
EngineManager::~EngineManager(void)
{
delete mEvent;
delete mConfig;
delete mControls;
delete mScreen;
}
내가 컨트롤을 게시 싶지만, 그것은 기본적으로 설정 같은 일을 클래스 - config에 대한 참조없이. 아직
, 뭔가 좋은 구현 ...
모든 아이디어를 일종의 함수 포인터 될 수 있음을 알려줍니다?
좋은 스마트 포인터를 사용하여 RAII .. –
에 무슨 일이 일어 났는지 나는 알 수 있었지만 이런 종류의 의사 소통을 처리하는 함수 포인터는 어떨까요? 다소 간단 해 보입니다. – zeboidlund
'Config' 생성자의'const EngineManager *'에서'EngineManager **'로의 변환 (또는'Controls'을 사용한 유사한 변환)은 어떻게됩니까? – Mankarse