私は非常に新しいプログラマーで超初心者なので、C++ についてあまり知りません。特に、ポインターのディープ コピーの作成に関して質問がありました。私が持っているのは、POD でいっぱいのクラス A と、このクラス (A *P) へのポインターです。他のいくつかの POD とクラス A へのポインターのベクトルを含む 2 番目のクラス B があります。ループ内で動的に割り当ておよび割り当て解除するため、A *P のディープ コピーのこのベクトルを埋めたいと思います。以下は動作しません。私のコピーコンストラクターと = 演算子のオーバーロードだと思います。これは私が楽しみと学習のためにやっているものです。
class A
{
public:
.....
.....
.....
};
class B
{
public:
B();
~B();
B(const B &Copier);
B& B::operator=(const B &Overloading);
vector<A*> My_Container;
A* Points_a_lot;
int counter;
};
B::B()
{
counter=0;
Points_a_lot=NULL;
}
B::~B()
{
for(size_t i=0; i<My_Container.size(); i++)
{
delete My_Container[i];
}
}
B::B(const B &Overloading)
{
My_Container[counter]=new A(*Overloading.Points_a_lot);
}
B& B::operator=(const B &Overloading)
{
if(!Overloading.My_Container.empty())
{
Overloading.My_Container[counter]=new B(*Overloading.Points_a_lot);
}
return *this;
}
int main()
{ A* p=NULL;
B Alphabet;
for(....)
{
p=new A;
//some stuff example p->Member_of_A=3; etc..
Alphabet.My_Container[Alphabet.counter]=p;
Alphabet.counter++;
delete p;
}
return 0;
}
どんな助けでも素晴らしいでしょう。お時間をいただきありがとうございます。必要なライブラリが含まれていると仮定します。