Dzień dobry, mam problem z dziedziczeniem, naprościej wytłumaczę na kodzie:
class Person {
string imie;
string nazwisko;
public:
Person(string i, string n);
Person(const Person &);
void Show();
};
Person::Person(string i, string n){
imie = i;
nazwisko = n;
}
Person::Person(const Person & p){
imie = p.imie;
nazwisko = p.nazwisko;
}
void Person::Show(){
cout << "Imie=" << imie << "\nNazwisko=" << nazwisko << endl;
}
class Gunslinger : public Person
{
double time;
int shots;
public:
Gunslinger(Person p, double t, int s);
Gunslinger(string i, string n, double t, int s);
double Draw();
void Show();
};
Gunslinger::Gunslinger(Person p, double t, int s): Person(p){
time = t;
shots = s;
}
Gunslinger::Gunslinger(string i, string n, double t, int s): Person(i,n){
time = t;
shots = s;
}
double Gunslinger::Draw(){
return time;
}
void Gunslinger::Show(){
Person::Show();
cout << "czas wyciagania=" << time << endl;
cout << "strzlay=" << shots << endl;
}
class PokerPlayer : virtual public Person
{
public:
PokerPlayer(string i, string n);
double Draw();
void Show(){Person::Show(); cout << "\nkarta=" << Draw() << endl;};
};
PokerPlayer::PokerPlayer(string i,string n) : Person::Person(i,n){
}
double PokerPlayer::Draw(){
return rand()%51 +1;
}
class BadDude : public Gunslinger
{
public:
BadDude();
void GDraw();
void GCard();
void Show();
};
BadDude::BadDude(){
Gunslinger::Gunslinger("Bad","Dude",6.6,200); // wywala błąd : no matching function for call to 'Gunslinger::Gunslinger()
}
void BadDude::GDraw(){
cout << "czas=" << Gunslinger::Draw() << endl;
}
void BadDude::GCard(){
cout << "karta=" << PokerPlayer::Draw() << endl;
}
zaznaczyłem któe miejsce mu się na podoba, ale nie ma pojęcia dlaczego, przecież powinien widzieć konstruktor tej klasy, dodanie do listy inicjalizacyjnej nic nie zmienia.
Wiem że program jest bez snesu i pewnie posiada literówki, ale nie o to chodzi (takie zadanko znalzałem : ) ).
Dziękuję bardzo za pomoc : D