2012-01-25 3 views
0

나는 C++ 응용 프로그램을 가지고 있습니다. 파일에서 일부 구성 데이터를로드해야합니다. 그래서 모든 관리자가 Roo'ts의 ctor에 만들어집니다응용 프로그램 설정 저장소

Root(singleton) → ConfigManager(); LogManager(); ...; 

나는 방법을 사용하여 포인터를 얻을 수 있습니다 :

구조는 Root::Get().GetSomeManager()을;

int main() 
{ 
    // Here all managers are initialized 
    Root::Get(); 
    // App cycle 
    Root::Get().Deinitialize(); 

    return 0; 
} 

ConfigManager은 전달 된 키로 파일 값에서로드 할 수있게합니다.

질문 : 일부 글로벌 추가 파일에 파일의 값을 저장할 수 있습니까?

내가 보이는 코드 파일 Config.hpp을 썼다 :

const int val = Root::Get().GetConfig()->GetValue("Key"); 

문제는이 파일이 구성 관리자가 초기화되지 않았거나 이전에 포함될 수있는 가능성이 있다는 것이다?

나는이 코드가 좋지 않다는 것을 알고 있지만 더 잘 쓰는 법을 모르겠습니다.

답변

0

런타임시 구성 파일에 액세스 할 필요가 없도록 응용 프로그램 시작시 구성 설정을 메모리에 저장하려는 것으로 알고 있습니다. 그런데 왜 이미 싱글 톤을 가지고있을 때 전역 변수를 사용하기로 결정 했습니까?

이 설정을 ConfigManager의 개인 속성으로 저장하고 ConfigManager 초기화의 일부로 초기화합니다. 그리고 나서 Root::Get().GetConfig()->GetValue("Key")과 같은 것이 호출되면, 이미이 개인 속성 중 하나의 값을 리턴합니다.

관련 문제