2

STLを使用してC++スタッフ管理システムを作成しているとします。

StaffMember私は:というエンティティクラスを持っています

class StaffMember
{
  //
}

と呼ばれるリポジトリStaff

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

staffMembersまたはとして宣言する必要があるかどうかをどのように知ることができますstd::vector<StaffMember>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 に答える