タイプ B のポインターのリストを含むクラス A のコピー コンストラクターを作成しようとしています。
class A
{
private:
list<B*> myList;
list<B*>::iterator iter;
public:
A()
{
}
// Copy constructor
A(const A &src)
{
myList.assign(src.myList.begin(), src.myList.end());
}
A& operator= (const A &src);
};
A& A::operator= (const A &src)
{
// do the copy
myList.assign(src.myList.begin(), src.myList.end());
// return the existing object
return *this;
}
さて、私の問題は、これを行う場合:
A=a1;
//call function that will change a1
A a2(a1);
//call function that will change a1
次に、a1 を変更するこの最後の関数を呼び出した後、a2 も変更されていることに気付きました。コピーコンストラクターがこれを防ぐはずだと思っていましたが、コードで何が間違っているのかわかりません。