Tôi có một lớp được gọi là Location
và tôi cần thêm một CArray vào các biến thành viên của nó. Sự thay đổi này gây ra sự cần thiết phải quá tải toán tử gán.Toán tử gán chồng quá tải C++
Có cách nào để sao chép tất cả các biến trong loại lớp này đã được sao chép trước khi tôi thực hiện thay đổi và chỉ thêm mã bổ sung để sao chép CArray mà không sao chép từng biến thành viên riêng lẻ?
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;
}
Vì vậy, bạn muốn, có hiệu lực, gọi toán tử gán trình biên dịch tạo ra? 'CArray' có toán tử gán không? –
Nó có một hàm tạo bản sao nhưng không có toán tử gán. Tôi không chắc chắn rằng tôi có thể gọi trình biên dịch tạo ra toán tử gán kể từ khi tôi đã thêm một biến thành viên CArray. –
Không, bạn không thể gọi trình biên dịch được tạo ra bởi vì nó không được tạo ra nữa khi bạn cung cấp nó (không phải vì bạn đã thêm thành viên CArray, thứ duy nhất thay đổi là trình biên dịch tạo ra một cho lớp của bạn không thể gọi một cho CArray vì nó không tồn tại). Tôi sợ không có cách nào để làm điều này. –