Dans mon projet C ++, j'ai deux classes, Particleet Contact. Dans la Particleclasse, j'ai une variable membre std::vector<Contact> contactsqui contient tous les contacts d'un Particleobjet, et les fonctions membres correspondantes getContacts()et addContact(Contact cont). Ainsi, dans "Particle.h", j'inclus "Contact.h".
Dans la Contactclasse, je voudrais ajouter du code au constructeur pour Contactcet appel Particle::addContact(Contact cont), afin qu'il contactssoit mis à jour pour les deux Particleobjets entre lesquels l' Contactobjet 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 Networkclasse 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 Particleclasse 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 Networkobjet de classe, est-ce une organisation de code / classe typique d'avoir des informations de connectivité entièrement contrôlées par l' Networkobjet (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' Networkobjet (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) )?
Networkobjet de classe qui contient des Particleobjets et des Contactobjets. 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.