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ế ạ ?

Khánh Nguyễn viết 02:14 ngày 01/10/2018

Tại sao operator+ lại có 2 arguments nhỉ?

Người bí ẩn viết 02:12 ngày 01/10/2018

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

Mai Anh Dũng viết 02:14 ngày 01/10/2018

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.

PHANSO operator+(PHANSO left, PHANSO const & right)

Đọ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

Bài liên quan
0