【发布时间】:2017-04-03 17:01:51
【问题描述】:
所以我有课程User 和Job:
class User {
string user_name;
Job* job;
};
class Job {
string job_type;
int salary;
User* user;
};
这种设计有什么问题吗?我有大量的Jobs 和Users,我想快速访问用户的工作或正在工作的用户。这些类的字段相互指向可以吗?
【问题讨论】:
-
仅供参考,您的示例可能是 begging 用于
std::shared_ptr和std::weak_ptr的用法,而不是像您一样使用原始指针。单击提供的链接以了解有关它们的更多信息。 -
我会使用一种完全不同的方法来处理 SQL 数据库和三个表“user”、“job_type”和“job”,后者在其他两个表之间建立关系,这样任何用户都可以拥有 0到 n 个工作。在您的 C++ 代码中,您将不再拥有单独的类
User和Job,而是直接由适当的 JOIN 产生的不可变查询结果类。任何修改都通过或多或少显式的 UPDATE 或 INSERT 进行。我发现这样的架构非常容易使用,正是因为它们让你摆脱了这个精确的指针问题。
标签: c++ class oop pointers class-design