01/10/2018, 00:03
Tại sao operator overloading bị lỗi khi truyền con trỏ làm tham số?
Hi mọi người,
Mình có 1 kiểu struct là: PHANSO
Khi khai báo nguyên mẫu hàm: PHANSO operator+(PHANSO *, PHANSO *);
thì nó báo lỗi ngay cái chữ operator: nonmember operator requires a parameter with class or enum type. Function definition for 'operator+' not found.
Còn khi khai báo nguyên mẫu hàm: PHANSO operator+(PHANSO, PHANSO);
thì nó không báo lỗi gì hết và chạy như bình thường.
Vậy mọi người cho em hỏi tại sao lại như thế ạ ?
Bài liên quan
Tại sao operator+ lại có 2 arguments nhỉ?
Cái này đâu liên quan bạn. Hàm trên là để định nghĩa operator + cho 2 phân số thôi, muốn thì cho 3 4 5 phân số cũng được nên tham số đâu liên quan
Operator overloading không được nhập vào con trỏ mà nên sử dụng reference. Khai báo thế này
PHANSO operator+(PHANSO, PHANSO)
cũng được. Nhưng khai báo thế này thì tốt hơn.Đọc thêm:
Tại sao không thể truyền con trỏ vào operator?: http://stackoverflow.com/questions/6171630/why-isnt-operator-overloading-for-pointers-allowed-to-work
Luật cơ bản và mẫu để tạo function operator? http://stackoverflow.com/questions/4421706/operator-overloading