假设我正在编写一个带有STL的C ++人员管理系统
我有一个名为StaffMember
的实体类:
class StaffMember
{
//
}
以及名为Staff
的存储库:
class Staff
{
private:
std::vector<StaffMember> staffMembers;
}
我如何知道是否应将staffMembers
声明为std::vector<StaffMember>
或std::vector<StaffMember>*
?
作为指针,我需要在~Staff()
内删除它,否则我不会。
两者都有效,但问题是,我选择哪一个,并且在将来弹出这个问题时,我可以使用一般规则吗?
答案 0 :(得分:2)
通常按值(std::vector<StaffMember>
),除非您需要共享它。即使你确实需要共享它,智能指针也比原始指针要好得多。
编译防火墙是一个例外(例如PIMPL)。
答案 1 :(得分:1)
我会用这个:
// This means I have a vector (a list) of StaffMember pointers
std::vector<StaffMember *> myStaffMembers;
StaffMember *newStaffMember = new StaffMember();
myStaffMembers.push_back(newStaffMember);