2017-01-10 16 views
-2

Im new a newy!私は別々のファイルを使用するプログラムを書いています。メインファイルでは、別のヘッダーに配置された構造体の情報を格納するためのベクトルを作成しました。構造体からオブジェクトを追加するために別のファイルに関数を構築しました。私の問題は、私の関数からオブジェクトをメインファイルのベクトルに戻す方法を見つけることができないということです。私の貧しいスペルのために私を許しなさい!関数からのベクトルへの戻り値

これは)(メインファイルではなく、メインの前に、私のベクトルである:
vector<Person> persons;

そして、これは私の関数である:

vector <Person> add(vector <Person> persons) 
{ 
     cin.get(); 
     Person tmpPerson; 
     cout << endl; 
     cout << "Add user information!" << endl; 
     cout << "Firstname: "; 
     getline(cin, tmpPerson.firstName); 

     cout << "Lastname: "; 
     getline(cin, tmpPerson.lastName); 

     cout << "Weight in kg (x.x): "; 
     cin >> tmpPerson.weigth;   
     //cin.get(); 

    persons.push_back(tmpPerson); 
+1

このコードの正確な問題は何ですか?例:どのようなエラーが発生しますか? – UnholySheep

+5

コードが不完全で、Personクラス定義を提供せず、 "do"の最後の括弧もありません。 – user

+0

値渡しではなく、参照渡しで人を渡してください( 'add'関数を使用したい場合は、参照することをお勧めします)。チェーン内でもvalueの代わりに参照を返す)。とにかく、C++を最初に学ぶ必要があるようです。 – pSoLT

答えて

2

そうする必要はありません。単純に参照によって関数にベクトルを渡します

void add(vector<Person>& persons) { 
    .... 
    persons.push_back(tmpPerson); 
} 

personsベクトルは、あなたが実際に元のコピーで作業されることを意味機能by reference、に渡されます。

+0

ありがとう!それを試してみよう! :) – bobasboll

+0

チャームのように働いた!どうもありがとうございました! :) – bobasboll