读书人

关于list中remove的有关问题

发布时间: 2013-07-08 14:13:00 作者: rapoo

关于list中remove的问题
定义一个类

class A
{
public:
int a;
double b;

};


对A建立一个链表:list<A>listOfA
重新写==操作符:
operator==(int b)
{
return(a == b);
}
我希望比如删除链表中a为2的元素:listOfA.remove(2)
但是编译器报错,求教!
[解决办法]
1. 重载需要重载 A 和 A 的 ==, 不是 A 和 int 的.
2. remove 的时候传一个 A 的对象, 不是 int 进去.
3. 如果你实在想传 int 给 remove, 为 A 定义一个接受 int 参数的构造函数, 并把参数赋值给 a 成员.
[解决办法]
list<A> 的remove的参数是 const A&
可以考虑用remove_if

读书人网 >C++

热点推荐