我有一個叫Location
類,我需要一個CARRAY添加到其成員變量。此更改導致需要重載賦值運算符。C++重載賦值運算符
有沒有辦法複製所有之前我做了變化,正在複製這一類類型的變量,只需添加額外的代碼複製CARRAY不單獨複製每一個成員變量?
Location& Location::operator=(const Location &rhs)
{
// Only do assignment if RHS is a different object from this.
if (this != &rhs)
{
//Copy CArray
m_LocationsToSkip.Copy(rhs.m_LocationsToSkip);
//Copy rest of member variables
//I'd prefer not to do the following
var1 = rhs.var1;
var2 = rhs.var2;
//etc
}
return *this;
}
所以,你想,實際上,調用編譯器生成的賦值運算符? 'CArray'是否有一個賦值操作符? – 2012-01-14 23:46:18
它有一個拷貝構造函數,但沒有賦值操作符。我不確定我是否可以調用編譯器生成的賦值運算符,因爲我已經添加了一個CArray成員變量。 – 2012-01-14 23:49:38
不,你不能調用產生的編譯器之一,因爲它不會產生任何更多的時候你提供一個(不是因爲你增加了一個CARRAY成員,唯一改變的事情是,編譯器生成一個對你的類不能調用一個用於CArray,因爲它不存在)。恐怕沒有辦法做到這一點。 – 2012-01-14 23:51:08