Поэтому у меня есть классы User
и Job
:Успокойтесь, если у 2 классов есть поле, указывающее друг другу?
class User {
string user_name;
Job* job;
};
class Job {
string job_type;
int salary;
User* user;
};
Существуют ли какие-либо проблемы с этим видом дизайна? У меня большое количество Job
s и User
s, и я хочу получить быстрый доступ к заданию пользователя или к пользователю, у которого есть работа. Это нормально, что у этих классов есть поля, которые друг к другу подходят друг другу?
Fyi ваш пример, вероятно, * begging * для ['std :: shared_ptr'] (http: // ru.cppreference.com/w/cpp/memory/shared_ptr) и ['std :: weak_ptr'] (http://en.cppreference.com/w/cpp/memory/weak_ptr) вместо того, чтобы терять вокруг сырых указателей, как вы , Нажмите на эти предоставленные ссылки, чтобы узнать больше о них. – WhozCraig
Я бы использовал радикально другой подход с базой данных SQL и тремя таблицами «пользователь», «job_type» и «job», причем последний установил связь между двумя другими, так что любой пользователь может иметь от 0 до n заданий. В вашем коде на C++ у вас больше не будет отдельных классов 'User' и' Job', но неизменяемых классов результатов запроса, полученных непосредственно из соответствующих JOIN. Любые изменения происходят через более или менее явные UPDATE или INSERT. Я нашел такие архитектуры бесконечно проще в использовании, именно потому, что они освобождают вас от этой точной проблемы с указателем. –