0

我的代码:

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));
  }

我如何使这件事起作用?

4

2 回答 2

2

list不知道如何比较你的对象。您需要operator==为您的类指定一个相等运算符 ( )。

您可以通过存储指向对象的指针来避免这种情况,并且list当您调用remove. 由于指针只是数字,所以比较没有问题。

于 2012-08-31T15:50:28.330 回答
1
a.remove(pA);

正如 Esthete 建议operator ==的那样,您需要重载或使用,即接收谓词并将谓词传递给它。http://cplusplus.com/reference/stl/list/remove_if/Aremove_if

于 2012-08-31T15:56:16.843 回答