2

假设我正在用 STL 编写一个 C++ 员工管理系统

我有一个名为的实体类StaffMember

class StaffMember
{
  //
}

和一个名为Staff

class Staff
{
  private:
    std::vector<StaffMember> staffMembers;
}

我怎么知道我是否应该声明staffMembersstd::vector<StaffMember>or std::vector<StaffMember>*

作为一个指针,我需要在里面删除它~Staff(),否则我不会。

两者都可以,但问题是,我应该选择哪一个?当这个问题在未来出现时,我可以使用一个通用规则吗?

4

2 回答 2

2

通常按值 ( std::vector<StaffMember>),除非您需要共享它。即使您确实需要共享它,智能指针也比原始指针好得多。

编译防火墙是一个例外(例如 PIMPL)。

于 2012-11-08T05:56:31.367 回答
1

我会用这个:

// This means I have a vector (a list) of StaffMember pointers
std::vector<StaffMember *> myStaffMembers;

StaffMember *newStaffMember = new StaffMember();
myStaffMembers.push_back(newStaffMember);
于 2012-11-08T05:54:08.000 回答