내 C++ 프로젝트에는 Engine
클래스, Renderer
클래스 및 Object
클래스가 있습니다.순환 종속성 수수께끼
Renderer
의 인스턴스는 Object
의 인스턴스를 렌더링합니다. 그러나 Object
의 인스턴스는 자신을 추가하거나 렌더링 할 항목 목록에서 자신을 제거합니다.
유용성의 관점에서 Object
의 인스턴스를 순환 종속성없이 그려야하는지 여부를 설정할 수 있어야합니다.
Update()
함수를 호출하는
Engine
클래스에
Update()
기능을 통해 이루어집니다
모든 개체에 대해 Object
의 각 인스턴스에 대해 Update()
함수를 호출 할 때 Object
클래스의 두 개의 부울 변수를 확인하도록 설정할 수 있습니다. 하나는 그려야하는지, 실제로 그려지 는가를위한 것입니다. 이렇게하면 Object
의 인스턴스가 필요에 따라 렌더링하기 위해 추가되거나 제거 될 수 있습니다.
이렇게하면 좋을까요? 이 방법은 효율적입니까 아니면 원형 의존성이없는 더 좋은 방법입니까?
편집 : 나는 더 명확하게 내 질문을 다시 작성하고 아마 더 관련이었고, 여기에서 더 복잡한 일을 방지하기 위해 새로운 질문에 두 번째 부분을 이동 한 .
내가 제대로 이해하면 나도 몰라 ...하지만 내 생각 'Renderer'에 대한 참조를'Object'에 추가하지 말아야합니다. 대신, Object :: Update가 호출 될 때, 객체가 드로잉리스트에 추가/제거되어야하는지 여부를 리턴하고,'Engine '이'Renderer'리스트에서 삽입/삭제를 수행하도록합니다. 그런 식으로 의존성은'Engine -> Renderer'이고 여러분은 이미 그것을 가지고 있습니다. – rodrigo
이것은 내 질문에서 언급했듯이 내가 생각해 낸 대안이지만, 비효율적 인 방법인지 또는 더 나은 대안이 있는지 확실하지 않습니다. – Interminable
포인터 나 참조 만 사용하면 클래스를 다른 헤더로 전달 선언 할 수 있으며 실제 헤더를 cpp에 포함시킬 수 있습니다. 내가 너무 신경 쓰지 않을 정도로 당신이이 수업들을 완전히 분리 할 필요가있는 것처럼 들리는 것은 듣지 않습니다. – sje397