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 に答える