Chào mọi người,
Mình có vấn đề này muốn hỏi ý kiến của mọi người, mong mọi người giúp mình hiểu rõ vấn đề
Mình làm 1 class phân số vào 3 hàm khởi tạo như sau:
CPhanSo::CPhanSo(){
this->ts = 0;
this->ms = 1;}
CPhanSo::CPhanSo(const CPhanSo &ps){
ts = ps.ts;
ms = ps.ms;}
CPhanSo::CPhanSo(int x = 0, int y = 1){
ts = x;
ms = y;}
Và 1 hàm operator như này:
CPhanSo CPhanSo::operator-(CPhanSo ps){
CPhanSo temp;
temp.ts = ts*ps.ms - ps.ts*ms;
temp.ms = ms*ps.ms;
return temp;}
Thì nó lại báo lỗi : 'CPhanSo::CPhanSo': ambiguous call to overloaded function ở câu lệnh CPhanSo temp; và mình phải sửa lại thành CPhanSo temp(0, 1) ; thì chạy bình thường.
Mình cảm thấy khó hiểu ở chỗ là mình đã có hàm khởi tạo không đối số, khi mình khai báo như vậy thì biến temp phải nhận giá trị là 0/1 mới phải.
Mình đã chạy câu lệnh CPhanSo temp; trong hàm main và nó không báo lỗi vào cho đúng kết quả.
Mong mọi người có thể giải thích giúp mình về lỗi này, cảm ơn mọi người 




83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?