我正在编写一个日历来存储带有多个生日对象的生日我不熟悉迭代器并在使用find()时遇到编译器错误

时间:2013-04-27 17:53:59

标签: c++ stl iterator

  

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

1 个答案:

答案 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