-1

我正在制作一个将生日存储在多个集合中的日历。多重集实际上存储了生日对象指针。我不知道如何使用带有迭代器的 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 回答