在我的C ++项目中,我有两个类,Particle
和Contact
。在Particle
该类中,我有一个成员变量std::vector<Contact> contacts
,其中包含Particle
对象的所有触点以及相应的成员函数getContacts()
和addContact(Contact cont)
。因此,在“ Particle.h”中,我包括“ Contact.h”。
在Contact
该类中,我想将代码添加到构造函数中Contact
,以调用Particle::addContact(Contact cont)
,以便contacts
针对Particle
在其间Contact
添加对象的两个对象进行更新。因此,我必须在“ Contact.cpp”中包含“ Particle.h”。
我的问题是这是否可接受/良好的编码习惯,如果不能,那么哪种更好的方式来实现我要实现的目标(简单地说,每当有新联系人时,自动更新特定粒子的联系人列表)被建造)。
这些类别将由Network
具有N个粒子(std::vector<Particle> particles
)和Nc个接触(std::vector<Contact> contacts
)的类别联系在一起。但是我希望能够拥有类似的功能particles[0].getContacts()
– Particle
在这种情况下可以在类中使用这样的功能,还是为此目的在C ++中有更好的关联“结构”(在另一个类中使用两个相关类) 。
在此方面,我可能需要转变看法。由于这两个类是由一个Network
类对象连接的,因此典型的代码/类组织是具有完全由该Network
对象控制的连接信息(因为Particle对象不应知道其联系,因此,它不应具有getContacts()
成员)功能)。然后,为了知道特定粒子具有什么接触,我将需要通过Network
对象(例如使用network.getContacts(Particle particle)
)获得该信息。
具有粒子粒子知识的C ++类设计是否也不太典型(也许甚至不鼓励),也就是(具有通过网络对象或粒子粒子访问信息的多种方式),无论哪种方式看起来更方便)?
Network
包含Particle
对象和Contact
对象的类对象时,我正在寻求一种典型的方法(也许甚至是被鼓励/鼓励)。有了这些基础知识,我便可以尝试评估它是否适合我的特定需求,随着我在项目中的进行,这些需求仍在探索/开发中。