2017-06-03 6 views
-2

私はC++とプログラミング全体に新しく、私はforname、surname、ageの変数を含むPersonクラスを作成しています。これは問題なく動作しますが、クラスベクトルをリニアサーチ関数に渡すとエラーが発生します。 "left of .end must class/Struct/union"エラーが発生します。なぜかわからないし、約1時間のグーグル・グーグルで、私は代わりに尋ねることに決めた。 、と返すように-1その年齢で何人がなかった場合:明確にするために.lengthの左にはclass/struct/nnionが必要です

int linsok(Person p[], int n, int a) 
{ 
    cout << "Please enter the age of the person you want to find: "; 
    cin >> a; 

    for (n = 0; n < p->Person::Person.end(); n++) 
    { 
    if (a = p->Person::Person.setAge) 
    { 
     cout << "The person you are looking for has the position " << n 
     << " in the list." << endl; 
    } 
    else 
     return -1; 

    }} 

、私の割り当ては、検索条件に一致する人の年齢を見つけるために、ベクトルを検索リニア検索を作成することです見つかりました。

+1

エラーメッセージは、 'Person :: Person'が構造型のインスタンスの名前ではないためです。あなたのコードには、あなたが尋ねなかったいくつかの他の問題もあります。 C++の理解ではなく、推測に頼っていることは明らかです。特に、 'Person p []'はC++でベクトルを渡す方法ではありません。コードを書くのを試みる前に、授業を聞いて、ノートや参考資料を読んでみてください。 – Peter

答えて

0

pstd::vectorではないことに注意してください。普通の配列です。 n引数ので、そのサイズを示すべきである:

for (int i = 0; i < n; ++i) { 
    // Code... 
0

Person p[]が配列です。 std::vector<Person>とは異なり、プロパティを通じて長さを判断する方法はありません。そのため、nが関数に渡され、おそらく配列の要素数を指定するのです。ループは次のようになります。次のように

for (int i = 0; i < n ; i++) 

あなたは人の年齢を参照してください。

p[i].age // or getAge(), I don't see you Person's class 

注:スコープ解像度::構文がやや進んでいます。特定の名前空間内でどの関数を呼び出すかを指定する必要があります。ほとんどの場合、あなたは今のところそれを無視することができます。

関連する問題