30/09/2018, 16:17
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 << "
Can nang: "<<canNang;
}
SuTu::SuTu(double w, double s):tocDo(s){ //Dong 46.
DongVat::DongVat(w);
}
void SuTu::inDL(){
DongVat::inDL();
cout << "
Toc do: "<<tocDo;
}
TranNuoc::TranNuoc(double w, double t):chieuDai(t){ //Dong 53.
DongVat::DongVat(w);
}
void TranNuoc::inDL(){
DongVat::inDL();
cout << "
Chieu 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.
Bài liên quan
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.
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:
Không chạy được bạn à…
@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.
Chắc là phải như thế này.
hoặc
Dạ vâng. Em hiểu rồi ạ.
@laptrinhio ok. Cảm ơn bạn nhiều nhé.