내 C ++ 프로젝트에서 나는 두 개의 클래스를 가지고 Particle와 Contact. 에서 Particle클래스 I는 멤버 변수가 std::vector<Contact> contacts(A)의 모든 접점 포함 Particle개체를 대응하는 멤버 함수 getContacts()와 addContact(Contact cont). 따라서 "Particle.h"에는 "Contact.h"가 포함됩니다.
에서 Contact클래스, 나는 생성자에 코드를 추가 할 Contact그 호출 Particle::addContact(Contact cont)이이 때문에, contacts모두 업데이트됩니다 Particle하는 사이에 개체 Contact개체가 추가되고있다. 따라서 "Contact.cpp"에 "Particle.h"를 포함시켜야합니다.
내 질문은 이것이 허용 가능한 / 좋은 코딩 관행인지 아닌지, 그렇지 않은 경우 달성하려는 것을 구현하는 더 좋은 방법은 무엇입니까? (간단히 말하면 새로운 연락처가있을 때마다 특정 입자의 연락처 목록을 자동으로 업데이트하는 것입니다) 생성됨).
이 클래스는 NetworkN 입자 ( std::vector<Particle> particles)와 Nc 접점 ( std::vector<Contact> contacts) 이 있는 클래스에 의해 연결됩니다 . 그러나 나는 다음과 같은 함수를 가질 수 있기를 원했다 particles[0].getContacts().- Particle이 경우 클래스에서 그러한 함수를 갖는 것이 좋습니까, 또는이 목적을 위해 C ++에서 더 나은 연관 "구조"가 있습니까 (다른 클래스에서 사용되는 두 개의 관련 클래스) .
내가 어떻게 접근하고 있는지에 대한 관점 전환이 필요할 수 있습니다. 두 클래스는 Network클래스 객체 로 연결되어 있기 때문에 일반적인 코드 / 클래스 조직은 Network객체에 의해 전체적으로 제어되는 연결 정보를 갖도록 되어 있습니까 (파티클 객체는 해당 연락처를 인식하지 않아야하며 결과적으로 getContacts()멤버 가 없어야 함) 함수). 그런 다음 특정 입자가 어떤 접촉을 가지고 있는지 알기 위해서는 Network객체를 통해 해당 정보를 얻어야 합니다 (예 :) network.getContacts(Particle particle).
Particle 객체가 그 지식을 갖는 것 (즉, 네트워크 객체 또는 Particle 객체 중 하나를 통해 여러 가지 방법으로 정보에 액세스하는 것이 더 편리한 것)을위한 덜 일반적인 C ++ 클래스 디자인이 아닐까요? )?
Network객체를 포함 하는 클래스 객체 가있을 때 일반적인 (아마도 선호 / 권장되는) 접근 방식을 요구한다고 가정 합니다. 이 기본 지식을 바탕으로 프로젝트에서 진행하면서 아직 탐색 / 개발중인 특정 요구에 맞는지 평가할 수 있습니다. ParticleContact