내 C ++ 프로젝트에는 Engine
클래스와 Object
클래스가 있습니다.
내 문제는 내 인스턴스 Object
가 생성되는 방식에 있습니다. 현재 이것은 클래스 의 CreateObject(parameters)
함수를 사용하여 수행됩니다 Engine
. 이것은의 새로운 인스턴스 추가 Object
에 std::vector
의 Object
인스턴스를.
나는 인스턴스의 목록을 유지하려면 Object
내에서 Engine
수업을하지만, 필요없이 CreateObject(parameters)
작동합니다. 그 이유는 상속 할 수 Object
있지만 여전히이 목록에 추가 할 수있는 새 클래스를 만들 수 있기 때문입니다 . 이 목록의 이유는 (에서 Engine
) Object
생성 된 모든 인스턴스를 반복 할 수 있기 때문 입니다.
이것은 궁극적으로 내가 만드는 것이 의미 할 것 Object
같은 뭔가 인스턴스 Object newObject = Object(parameters);
만, 여전히이 Engine
클래스는 모든 목록을 유지 관리 Object
할 필요없이, 인스턴스 Object
의 인스턴스를 참조하는 Engine
인스턴스에로 (또는이 목록에 자신을 추가 할 목록을 Object
해야 목록에 대해 알지 못함). 할 수 있습니까?
Engine 클래스에서 정적 컬렉션 데이터 멤버를 정의하고 Object 생성자 및 소멸자에서 업데이트 할 수 있습니다.
class Engine
{
friend class Object;
...
public:
static std::set< Object* > m_instances;
};
class Object
{
public:
Object();
virtual ~Object();
...
};
생성자에서 증가시키고 소멸자에서 감소시킵니다.
Object::Object()
{
Engine::m_instances.insert(this);
}
Object::~Object()
{
Engine::m_instances.erase(this);
}
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다