Tôi đã cố gắng thực hiện một số toán tử quá tải (* và +) trên một lớp được bọc trong con trỏ thông minh.Quá tải của nhà điều hành của lớp được bọc trong con trỏ thông minh
auto p = std::make_unique<Polynomial<T>>();
Khi tôi cố gắng quá tải bằng cách sử dụng quá tải bình thường, rõ ràng là sẽ yêu cầu loại con trỏ thông minh.
Chỉnh sửa, vì vậy:
std::unique_ptr<Polynomial<T>> operator+(const std::unique_ptr<Polynomial<T>>& right);
template<class T>std::unique_ptr<Polynomial<T>> Polynomial<T>::operator+(const std::unique_ptr<Polynomial<T>>& right) {
//Do stuff
}
Và các lỗi:
Vậy làm thế nào để bạn đi về quá tải các nhà khai thác bình thường khi lớp được gói gọn trong một smartpointer?
"Khi tôi cố gắng quá tải nó sử dụng quá tải bình thường, nó rõ ràng là yêu cầu cho các loại con trỏ thông minh." -- Gì. – Shoe
Tại sao các lớp học này lại được bao bọc trong các con trỏ thông minh? Tại sao bạn không thể sử dụng chúng làm loại giá trị? –