No meu projeto C ++, tenho duas classes Particlee Contact. Na Particleclasse, eu tenho uma variável de membro std::vector<Contact> contactsque contém todos os contatos de um Particleobjeto e as funções de membro correspondentes getContacts()e addContact(Contact cont). Assim, em "Particle.h", incluo "Contact.h".
Na Contactclasse, eu gostaria de adicionar código ao construtor para o Contactque será chamado Particle::addContact(Contact cont), para que contactsseja atualizado para os dois Particleobjetos entre os quais o Contactobjeto está sendo adicionado. Assim, eu teria que incluir "Particle.h" em "Contact.cpp".
Minha pergunta é se isso é aceitável / uma boa prática de codificação e, se não, qual seria a melhor maneira de implementar o que estou tentando alcançar (basta colocar, atualizar automaticamente a lista de contatos de uma partícula específica sempre que um novo contato é criado).
Essas classes serão ligadas por uma Networkclasse que terá N partículas ( std::vector<Particle> particles) e contatos Nc ( std::vector<Contact> contacts). Mas eu queria poder ter funções como particles[0].getContacts()- é aceitável ter essas funções na Particleclasse nesse caso, ou existe uma "estrutura" de associação melhor em C ++ para esse propósito (duas classes relacionadas sendo usadas em outra classe) .
Talvez eu precise de uma mudança de perspectiva aqui na maneira como estou abordando isso. Como as duas classes são conectadas por um Networkobjeto de classe, é típico da organização de código / classe ter informações de conectividade totalmente controladas pelo Networkobjeto (em que um objeto Particle não deve estar ciente de seus contatos e, consequentemente, não deve ter um getContacts()membro função). Então, para saber quais contatos uma partícula específica possui, eu precisaria obter essas informações através do Networkobjeto (por exemplo, usando network.getContacts(Particle particle)).
Seria menos típico (talvez até desanimado) o design da classe C ++ para um objeto Particle ter esse conhecimento também (por exemplo, ter várias maneiras de acessar essas informações - por meio do objeto Rede ou do objeto Particle, o que parecer mais conveniente )?
Networkobjeto de classe que contém Particleobjetos e Contactobjetos. Com esse conhecimento básico, posso tentar avaliar se ele se encaixa ou não nas minhas necessidades específicas, que ainda estão sendo exploradas / desenvolvidas à medida que avançamos no projeto.