2012-02-11 9 views
0

次のコードを実装して、関数が既存の配列に書き込むことができるようにする方法がわかりません。パラメータとして(constのスタッフ&)を有するaddStaff(const Staff&)の配列に配置する方法

void Project::addStaff(const Staff&) 
{ 
    //add employees into staff array 
} 

それがとにかくオブジェクトを作成しないように私に新しいです。プログラムを正しく実装するためにそのまま使用するため、変更できません。

Staff::Staff (std::string lname, std::string fname) 
    : theLname(lname), theFname(fname) 
    {} 

私は配列に挿入するために必要な値にアクセスすることができますので、スタッフのための変数を記述する方法はありますが、次のようにスタッフのコンストラクタはありますか?どんな助けでも大歓迎です!

答えて

1

あなたProjectクラスはstd::vectorデータメンバを有していてもよく、そしてあなたは、配列に新しいStaffインスタンスを追加するvector.push_back()メソッドを使用することができます。

// Inside Project class: 
std::vector<Staff> m_staffPersons; 


void Project::addStaff(const Staff& newStaff) 
{ 
    // Add employees into staff array 
    m_staffPersons.push_back(newStaff); 
} 
1

が、私はこのProjectの一員として、従業員のリストを表すstd::vector<Staff>を定義しますクラス:

class Project 
{ 
public: 
    void addStaff(const Staff&); 
    vector<Staff> employees; 
} 

次に、あなたのaddStaff方法は次のようになります。

void Project::addStaff(const Staff& newEmployee) 
{ 
    employees.push_back(newEmployee); 
} 

しかし、クラスStaffの名前を変更するのは間違いなく、それ自体についてはあまり言いません。 Employeeは、このクラスの方がはるかに良い名前になります。

+2

std :: vector データメンバーをプライベート(または保護)にする方がいいでしょう。 –

+0

おそらく。しかしそれはジェイクがすべき決定です。 – LihO

関連する問題