いくつかのフィールドを持つ構造体があり、おそらくそれらをいじり回す(追加、削除)としましょう。
struct Something
{
int number;
int stuff[4];
//... many other things
Something(const Something& something, int newnumber) : number(newnumber)
{
//is there any way to default the rest to copy?
}
};
私は(デフォルトを使用して)コピーコンストラクターを宣言していないので、明らかに基本的なケース(ポインターなどなし)を処理します。ただし、1つの変更を加えて構造体をコピーできるようにもしたいと思います。つまり、初期化リストにコピーするすべてのものを入力し、構造体の内容が変更されるたびに変更する必要があるということです。私の宣言されていないコピーコンストラクターは、私の側の介入なしに変更を便利に処理しますが。
そのデフォルトのコピーコンストラクターを利用して、構造体の内容をいじるたびに「1回の変更でコピー」コンストラクターを変更する必要がないようにする方法はありますか?
編集:コンストラクターの委任により、次のエラーが発生します。
Something(const Something& something, int newnumber) : Something(something), number(newnumber) {}
委任コンストラクターの呼び出しは、唯一のメンバー初期化子
'番号'である必要があります:すでに初期化されています