C++는 내가 객체 지향을 사용하는 광범위하게 사용했던 첫 번째 언어이므로이 아이디어에 조금 새로운 점이 있습니다. 저는 C++에서 Go (실제 OOP 시스템 대신 인터페이스를 사용하는)에서 작업하고 있던 게임 라이브러리를 이식하려고합니다.충돌 감지 시스템의 클래스 구조에 대한 조언
포인트, 경계, 선 및 다각형의 네 가지 유형을 사용하는 충돌 시스템이 있습니다. 제가하고 싶은 것은 이들 모두를 "Collider"클래스로 추상화 할 수 있고 두 개의 Collider 객체를 가져 와서 충돌을 테스트 할 수있는 기능을 가지고 있습니다. 이 후 원래
bool Collides(Collider obj1, Collider obj2);
내가 다른 유형을 제공 충돌을 테스트 할 각 충돌 유형에 대한 방법 (즉, 방법 OnPoint, OnBounding, 온라인 및 OnPolygon)를 가질 수있다 생각하고 : 그것은 다음과 같이 보일 것입니다 "Collider"는 이러한 모든 메서드를 필요로하는 가상 클래스이지만, C++에서는 클래스가 서로 컴파일에 의존하기 때문에 불가능하다는 것을 깨달았습니다 (맞습니까?).
나는 내가 할 수있는 일에 대해 약간의 상실감이있다. 내 디자인 아이디어가 파이프 꿈일까요?
왜 클래스가 서로 의존한다고 생각합니까? 그들 모두가 추상 클래스 인 Collider의 자식 클래스이고 그 모두가 그 클래스에 정의 된 메소드를 오버 라이드하는 경우, Collides 메소드는 인수의 구체적인 유형에 대해 걱정할 필요가 없다. – Ashalynd
씬의 오브젝트가 충돌을 감지하도록하지 마십시오. "bool collision (const circle & const const Rectangle &)"와 같은 독립적 인 함수를 가지고있는 scene 객체가 있습니다. –
좋아요, 어떤 형태의 Collides (Collider obj1, Collider obj2)를 만들기위한 최선의 방법은 무엇입니까? '함수가 충돌 객체의 조합을 받아들이도록 'Collides'에 과부하를 걸어야합니까? – Velovix