我有一个叫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