我的代码:
using namespace std;
class A{public:
int a;
A(int itemA) {a=itemA;}
};
class B:A{public:
int b;
B(int itemA, int itemB) {a=itemA; b=itemB;}
};
class C{
list<A> a;
list<B> b;
void transferAB(const A& pA, int itemb){
a.remove(pA);
b.push_back(B(pA.a, itemb));
}
如何让这件事有效?
答案 0 :(得分:2)
list
不知道如何比较您的对象。您需要为类指定相等运算符(operator==
)。
您可以通过将指针存储到对象来避免这种情况,list
会在您调用remove
时比较指针。由于指针只是数字,因此比较没有问题。
答案 1 :(得分:1)
a.remove(pA);
您需要为Esthete建议的operator ==
重载A
,或使用remove_if
,即接收谓词并将谓词传递给它。 http://cplusplus.com/reference/stl/list/remove_if/