Dans mon projet C ++, j'ai deux classes, Particle
et Contact
. Dans la Particle
classe, j'ai une variable membre std::vector<Contact> contacts
qui contient tous les contacts d'un Particle
objet, et les fonctions membres correspondantes getContacts()
et addContact(Contact cont)
. Ainsi, dans "Particle.h", j'inclus "Contact.h".
Dans la Contact
classe, je voudrais ajouter du code au constructeur pour Contact
cet appel Particle::addContact(Contact cont)
, afin qu'il contacts
soit mis à jour pour les deux Particle
objets entre lesquels l' Contact
objet est ajouté. Ainsi, je devrais inclure "Particle.h" dans "Contact.cpp".
Ma question est de savoir si cela est acceptable / bonne pratique de codage et, sinon, quelle serait une meilleure façon de mettre en œuvre ce que j'essaie d'atteindre (simplement mettre à jour automatiquement la liste des contacts pour une particule spécifique chaque fois qu'un nouveau contact est créé).
Ces classes seront liées entre elles par une Network
classe qui aura N particules ( std::vector<Particle> particles
) et Nc contacts ( std::vector<Contact> contacts
). Mais je voulais pouvoir avoir des fonctions comme particles[0].getContacts()
- est-ce correct d'avoir de telles fonctions dans la Particle
classe dans ce cas, ou y a-t-il une meilleure "structure" d'association en C ++ à cet effet (de deux classes liées utilisées dans une autre classe) .
J'ai peut-être besoin d'un changement de perspective ici dans la façon dont j'aborde cette question. Étant donné que les deux classes sont connectées par un Network
objet de classe, est-ce une organisation de code / classe typique d'avoir des informations de connectivité entièrement contrôlées par l' Network
objet (en ce qu'un objet Particle ne devrait pas être au courant de ses contacts et, par conséquent, il ne devrait pas avoir de getContacts()
membre une fonction). Ensuite, afin de savoir quels contacts a une particule spécifique, j'aurais besoin d'obtenir ces informations via l' Network
objet (par exemple, en utilisant network.getContacts(Particle particle)
).
Serait-il moins typique (peut-être même découragé) de concevoir une classe C ++ pour un objet Particle d'avoir également ces connaissances (c'est-à-dire, avoir plusieurs façons d'accéder à ces informations - via l'objet Network ou l'objet Particle, selon ce qui semble le plus pratique) )?
Network
objet de classe qui contient des Particle
objets et des Contact
objets. Avec cette connaissance de base, je peux ensuite essayer d'évaluer si elle correspond ou non à mes besoins spécifiques, qui sont toujours explorés / développés au fur et à mesure de l'avancement du projet.