01/10/2018, 10:02
Xử lí lỗi trong hàm trả có trả về giá trị
Ví dụ mình có lớp ma trận:
class Matran{ private: int h,c; int *a;
public:
// các hàm khởi tạo, hủy, in mat trận
Matran(int nh, int nc){
h=nh, c=nc;
a = 0;
}
...
}
Bây giờ mình muốn viết hàm cộng 2 ma trận:
Matran cong(Matran const &ma, Matran const &mb){ if (ma.h!=mb.h || ma.c!=mb.c){ cout<<"Hai ma tran khong cung khich thuoc"<<end; // Kết thúc hàm
return ???
}
// Thực hiện cộng 2 ma trận
Matran res(ma.h, ma.c);
...
return res;
}
Khi 2 ma trận không cùng kích thước thì báo lỗi và kết thúc tại đó, vấn đề ở đây là return cái gì, trong phần khai báo hàm thì yêu cầu trả về 1 Matran.
Cách xử lí của mình là trả về 1 Matran rỗng: return Matran(0,0);
Nhưng mình thấy cách này không hay cho lắm. Không biết còn cách xử lí nào khác không nên mình đăng lên xin ý kiến mọi người.
Bài liên quan
Mình thì thích hàm cộng ma trận sẽ chỉ cộng những ma trận có cùng kích thước và sẽ có 1 bước kiểm tra trước khi gọi hàm.
Hi Vu Dao Anh Tuan.
Kiểm tra trước khi cộng.
Ném ngoại lệ.
kiểm tra bên ngoài hàm phải không bạn
Tính chất của việc “cộng” hai ma trận khác chiều nó giống như chia cho 0 vậy, chỉ có thảy exception là duy nhất đúng.