다른 클래스의 .h 및 .cpp 파일에서 액세스 할 수 있어야한다는 의미에서 "전역 적"이어야하는 객체가 있습니다. 이렇게 접근하는 방법을 잘 모르겠습니다. 문제를 자세히 설명하겠습니다.글로벌 C++ 객체 만들기
저는 CoreEnvironment라는 클래스가 있습니다. 이 클래스는 내 엔진의 핵심을 렌더링, 네트워킹, 물리 및 PathFinding과 같은 가장 낮은 수준에서 유지합니다. 이 클래스의 인스턴스는 한 번에 하나만 존재할 수 있으며 응용 프로그램의 전체 수명 동안 존재합니다. 내 첫 번째 생각은 싱글 톤으로 작성하는 것이었지만 연구를 한 후에 싱글 톤 사용에 대한 부정적인 의견이 많지 않았으며 싱글 톤을 만드는 방법을 완전히 이해하지 못했습니다. 내 연구에서 나는 "Extern"키워드의 사용법을 보았지만 사용법은 분명하지 않았습니다.
class CoreEnvironment
{
NetHandler* m_NET;
NetPoint* Server;
PhysicsHandler* m_Physics;
irr::IrrlichtDevice* Device;
irr::ITimer* Timer;
public:
CoreEnvironment();
~CoreEnvironment();
bool RunDevice();
void Update();
} CoreEnv;
내가 같은 내 엔진의 일부 높은 수준의 수업이 있습니다 : ActorHandler 및 WorldHandler을 여기
는 클래스의 골격이다. 이 두 클래스의 .cpp 파일에서 CoreEnv에 액세스해야합니다. "CoreEnvironment.h"를 #include하면 CoreEnv의 다른 인스턴스가 파일이 포함될 때마다 만들어 지지만 초기화 된 원래의 인스턴스에 액세스해야합니다.이 전체 구조가 잘못된 접근 방법 일 수 있습니다. 이 문제를 해결하거나보다 효율적인 접근법에 대한 조언이나 제안은 크게 감사하겠습니다. 시간 내 주셔서 감사합니다.
"singleton"은 이러한 요구 사항을 충족하는 패턴이기 때문에 훌륭한 태그를 만듭니다. 어떤 "부정적인 의견"이 당신이 그것을 사용하지 못하게 했습니까? 또는 당신은 무엇을 "완전히 이해하지 못했습니까"? – Solkar