以下に示すように、コンストラクターに引数を取る単純なクラスを作成しました。
class Jam
{
int age;
std::string name;
Jam *jam;
Jam(std::string argName) {
name = argName;
}
};
引数を取り、渡されたパラメーターにJam
'sを初期化します。name
唯一の問題は、別のコピーをJam
コンストラクターに渡して、値をコピーして既存のクラスへのポインターを初期化できるようにしたいことです。通常C++では指定できJam *jam = new Jam(existingJam);
、デフォルトでコピーされますが、すでにstd::string argName
パラメーターとして持っているため、これを行うことを拒否します。
独自のコピー コンストラクターの作成方法を説明している記事を読みましたが、かなり面倒で、各クラス メンバーを個別にコピーする必要があるため、10 個以上のデータ メンバーを持つクラスではあまり意味がないように思えます。各メンバーを個別に初期化するよりも良い方法はありますか?
Jam::Jam(std::string argName, Jam *argJam)
{
age = argJam->age;
//etc...
}