Lỗi: no appropriate default constructor available?

#include<iostream>


using namespace std;

class DongVat
{
protected:
	double canNang;
public:
	DongVat(double w);
	void inDL();
};
class SuTu: public DongVat{
private:
	double tocDo;
public:
	SuTu(double w, double s);
	void inDL();
};
class TranNuoc: public DongVat{
private:
	double chieuDai;
public:
	TranNuoc(double w, double t);
	void inDL();
};
int main()
{
	SuTu s1(200, 120);
	cout << "Thong tin cua  Su Tu:";
	s1.inDL();
	cout<<endl;
	TranNuoc t1(250 , 3);
	cout << "Thong tin cua Tran Nuoc: ";
	t1.inDL();
	cout <<endl;
	system("pause");
	return 0;
}
DongVat::DongVat(double w):canNang(w){
}
void DongVat::inDL(){
	cout << "\nCan nang: "<<canNang;
}
SuTu::SuTu(double w, double s):tocDo(s){ //Dong 46.
	DongVat::DongVat(w);
}
void SuTu::inDL(){
	DongVat::inDL();
	cout << "\nToc do: "<<tocDo;
}
TranNuoc::TranNuoc(double w, double t):chieuDai(t){ //Dong 53.
	DongVat::DongVat(w);
}
void TranNuoc::inDL(){
	DongVat::inDL();
	cout << "\nChieu dai: "<<chieuDai;
}

nó báo lỗi : error C2512: ‘DongVat’ : no appropriate default constructor available. Ở dòng 46 và 53.

Vậy có nghĩa là sao vậy, mong mọi người giúp mình.

1 Like

Bạn cần có constructor default, tức là constructor không có tham số, hãy thêm và khai báo cái này.

3 Likes

OK. thanks bạn. Chương trình chạy được rồi. Tiện đây bạn cho mình hỏi câu này với :Khai báo dv1 là con trỏ thuộc kiểu DongVat. Gán dv1 bằng địa chỉ của s1. Gọi hàm inDL thông qua con trỏ dv1. Sau đó thay đổi dv1 sao cho nó chứa địa chỉ của t1. Gọi hàm inDL thông qua con trỏ dv1… Mình làm như này:

int main()
{
          DongVat *dv1;
          SuTu s1(200, 120);
          dv1 = &s1;
          cout << "Thong tin cua  Su Tu:";
	*dv1.inDL();

Không chạy được bạn à…

1 Like

@Thanh_Nam nên đặt câu hỏi mới ra topic mới, khi topic này đã giải quyết xong được câu hỏi ban đầu.

2 Likes

Chắc là phải như thế này.

dv1->inDL();

hoặc

(*dv1).inDL();
2 Likes

Dạ vâng. Em hiểu rồi ạ.

2 Likes

@laptrinhio ok. Cảm ơn bạn nhiều nhé.

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