比方說,我有一個具有一定數量的字段的結構,而且我可能會亂搞它們(添加,刪除)。複製構造函數有一個改變:我可以得到默認的複製構造函數來完成剩下的工作嗎?
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?
}
};
我沒有聲明覆制構造函數(使用默認值),所以它顯然會處理任何基本情況(無指針等)。不過,我也希望能夠將我的結構複製一件改變的東西。這意味着我需要填寫一個初始化列表以及所有要複製的內容,並在每次結構內容更改時更改它。即使我的未聲明的拷貝構造函數可以方便地處理更改,而無需我的干預。
有什麼辦法可以利用這個默認的拷貝構造函數,所以我不必每次都改變我的「拷貝一個改變」的構造函數,我混淆了我的結構內容?
編輯: 構造代表團導致這些錯誤:
Something(const Something& something, int newnumber) : Something(something), number(newnumber) {}
到委託構造函數的調用應是唯一的成員初始化
「數字」:已初始化
是的在C + + 11,可能與C + + 03中的額外功能。 – ipc
C++ 11支持委託構造函數,它可以幫助你實現你想要的東西 –
老實說,我會更習慣於's2 s1(s1); s2.number = newNumber;'。類似這樣的每個成員的基礎是大量的維護,而不是基於每個成員的基礎引起混淆,哪些成員擁有它,哪些沒有。 – chris