Tôi có một lớp học với một thành viên không bị thay đổi bởi các phương pháp của lớp học, vì vậy tôi đã đánh dấu nó là const
. Vấn đề của tôi là tôi đã sử dụng toán tử gán mặc định giống như một hàm tạo bản sao để tránh nhiều khai báo. Nhưng trong trường hợp này toán tử gán không được tạo tự động, vì vậy tôi nhận được một số lỗi trình biên dịch: 'operator =' function is unavailable
. Điều này có vẻ như không có kịch bản thực tế nào trong đó các thành viên của lớp const có thể thực sự được sử dụng (ví dụ: bạn có thấy bất kỳ thành viên const nào trong mã STL không?).Các thành viên của lớp const có hữu ích khi toán tử gán bị quá tải không?
Có cách nào để sửa lỗi này, bên cạnh việc xóa const
?
EDIT: một số mã
class A
{
public :
const int size;
A(const char* str) : size(strlen(str)) {}
A() : size(0) {}
};
A create(const char* param)
{
return A(param);
}
void myMethod()
{
A a;
a = create("abcdef");
// do something
a = create("xyz");
// do something
}
Tôi đã chỉnh sửa tiêu đề cho nội dung mà tôi nghĩ mô tả chính xác hơn ý bạn muốn hỏi và sẽ khuyến khích các câu trả lời hữu ích hơn. Nếu bạn không đồng ý, vui lòng thay đổi lại. – Crashworks
@Crashworks cảm ơn! –