だから基本的には2つのクラスがあるとしましょう。 1は人間と呼ばれ、もう1つは家と呼ばれます。ディープコピーを作成するには?
私が今行っているが、家が作ると私は
Human *humanP;
を持って、家.hファイルでそう基本的に、人間を破壊すると判断された.cppファイルのコンストラクタ
humanP = new Human;
humanP->something(); // lets me access the methods in the Human class
で私が知る限り、これは構図を作り、家は人間の物を創造/破壊する。しかし、私は高さや年齢のように私の人間のオブジェクトにパラメータを追加する必要があります。メインで
私はそれらのパラメータを持つ人間のオブジェクトを作成します
Human humanO(age, height);
を作りたい。これにより
int age, height;
cout << "Whats your age? << endl;
cin >> age;
cout << "Whats your height? << endl;
cin >> height;
のようなものを持っていると思います。しかし、私はまだ人間のオブジェクトをハウスクラスで開催し、そこで破壊することを望んでいます。私が知る限り、私はそれを深くコピーする必要があるので、私はHouseクラスの中でhumanOをコピーしてから、メインファイル内のオブジェクトを削除することができます。
私はトラフの例を探していましたが、かなり異なるものがあります。メインで作成されたこのHumanオブジェクトのディープコピーを作成するコードはどのようなものか書くことができますか?
編集:
ここで編集を作る代わりに、それはここにコードを記述する方が簡単です原因返信。
もう別の愚かな質問です。クラスメソッド
addHuman(Human *other)
{
this->humanP = other;
cout << humanP->getAge() << endl << endl << endl;
}
を持ちながら、私は
Human *newPerson = new Human
で簡単な方法を使用して
House house;
house.addHuman(newPerson)
を行う場合、それは正常に動作し、私の年齢を与えます。
スマートポインタを使用しても機能しない場合、どうすればよいですか?それは私に "no matching function"のようなエラーを与えます。私はaddHuman()
にどのような引数を入れてスマートなポインタを使うのでしょうか?
コピーコンストラクタはありますか?とにかく、HouseはなぜhumanPメンバーを定義しているのですか?それは何を表していますか? – user2357112
おそらく 'new'を使わないでください。 'std :: vector humans'を' House'クラスに入れると、デフォルトのコピーコンストラクタでコピーされます。 [この宿題ですか](http://meta.stackoverflow.com/questions/334822/how-do-i-ask-and-answer-homework-questions)? –
wally
深いコピーを試みるいくつかのコードを投稿すると、助けがより簡単になります。 – wally