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.

HK boy viết 12:03 ngày 01/10/2018

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.

Tao Không Ngu. viết 12:04 ngày 01/10/2018

Hi Vu Dao Anh Tuan.
Kiểm tra trước khi cộng.
Ném ngoại lệ.

Vu Dao Anh Tuan viết 12:15 ngày 01/10/2018

kiểm tra bên ngoài hàm phải không bạn

rogp10 viết 12:16 ngày 01/10/2018

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.

Bài liên quan
0