0

私はベクトルの使い方を学んでいて、いくつかの情報を取得してベクトルに入れ、それを繰り返す簡単なプログラムを書いていました。私のソースは

int main ()
{

    int answer= 1;
    int decide;
    int vectCount = 0;
    vector<animal> pet;

    while(answer > 0)
    {    

        pet.push_back(animal());
        cout << "enter the name of the pet" << endl;
        getline(cin,pet[vectCount].name);

            cout << "Please enter the age of the pet" << endl;
            cin >> pet[vectCount].age;

         cout << "enter the weight of the pet" << endl;
         cin >> pet[vectCount].weight;


        do
        {
        cout << "Please enter the size of the pet S/M/L" << endl;
        cin >> pet[vectCount].size;
        }while(pet[vectCount].size != 'L' 
        && pet[vectCount].size != 'M' 
        && pet[vectCount].size != 'S');

        answer = question(decide);

    }
    vector<animal>::iterator i;
    for(i = pet.begin(); i != pet.end(); ++i)
    {

        cout << "The name of the pet is " << *i->name << endl;
        cout << "The age of the pet is " << *i->age << endl;
        cout << "The weight if the pet is " << *i->weight << endl;
        cout << "The size of your pet is " << *i->size;
        if(*i->size == 'S')
        cout << "(-): meow" <<endl;
        if(*i->size == 'M')
        cout << "(---): woof" <<endl;
        if(*i->size == 'L')
        cout << "(------): moooo" <<endl;            
    }
    cout << "Exiting the program" << endl;


    cin.get();
    return 0;
}

私が得るエラーは次のとおりです。

no match for 'operator*' in '*(&i)->__gnu_cxx::__normal_iterator<_Iterator, _Container>::operator-> [with _Iterator = animal*, _Container = std::vector<animal, std::allocator<animal> >]()->animal::name'

誰でも問題の原因を特定するのを手伝ってもらえますか?

4

4 に答える 4

0

変更して「*」を削除してみてください

 cout << "The name of the pet is " << *i->name << endl;

 cout << "The name of the pet is " <<  i->name << endl;

また

 cout << "The name of the pet is " <<  (*i).name << endl;
于 2013-04-16T01:36:19.720 に答える