-1

誕生日をマルチセットに格納するカレンダーを作成しています。multiset は実際に誕生日オブジェクト ポインターを格納します。マルチセットのポインターへのイテレーターで find 関数を使用する方法がわかりません

 MultiSet::MultiSet(string fName,string lName,int d,int m, int y):dateAndName(fName,lName,d,m,y)
    {
    }
    void MultiSet::searchByName( Birthday *a)
    {
        multiset<Birthday *>::iterator result;
     *I am getting a compiler error on this next line it reads*
      Error   1   error C2664:  : 
      cannot convert parameter 1 from 'Birthday' to 'Birthday       *const &. 
     **

ポインターへのイテレーターで find 関数を使用する方法がよくわかりません

**

    result=nameSet.find(&a);

    if(result!=dateSet.end())
        cout<<result->getFirstName();
    else
        cout<<"Person not found. "<<endl;
}
void MultiSet::addToList(Birthday *a)
{
    nameSet.insert(a);
    dateSet.insert(a);
}
4

1 に答える 1

1

変数aは へのポインターBirthdayであり、マルチセットには へのポインターが含まれてBirthdayいるため、代わりに:

nameSet.find(&a); // ERROR! nameSet is a container of Birthday*
                  // objects, and not of Birthday** objects

やったほうがいい:

nameSet.find(a); // OK: Here you just look for a pointer to Birthday
于 2013-04-27T17:56:47.690 に答える