我正在创建一个日历,用于在多重集中存储生日。该 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);
}
答案 0 :(得分: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