Αν θέλουμε να υλοποιήσουμε δύο κλάσεις husband και wife, στην καθεμία από τις οποίες καλείται η μέθοδος getname() του καθένα (ως μέθοδος της κλάσης person που κληρονομούνε), πώς μπορεί η καθεμία να καλέσει τη μέθοδο husband->getname() και wife->getname() αντίστοιχα; Παρακάτω είναι ο κώδικας:
class person {
private:
string _name;
int _age;
public:
person(string name, int age) : _name(name), _age(age) {}
virtual void marital_status(){
cout << "Unknown." << endl;
}
string getname(){
return _name;
}
};
class husband; // forward declaration
class wife : public person {
private:
husband* _herhusband;
public:
wife(husband* herhusband, int age, string name) : person(name, age), _herhusband(herhusband) {}
void marital_status() override {
cout << getname() << " is married to " << _herhusband->getname();
}
};
class husband : public person {
private:
wife* _hiswife;
public:
husband(wife* hiswife, int age, string name) : person(name, age), _hiswife(hiswife) {}
void marital_status() override{
cout << getname() << " is married to " << _hiswife->getname();
}
}