class Room{
public:
void ColorRoom(){};
};
class House{
public:
Room* GetRoom(){return &m_room;}
private:
Room m_room;
};
1) Zimmer kann nicht ohne ein Haus existieren, ein Haus "hat ein" Zimmer. (Zusammensetzung)
2) Eine andere Möglichkeit, den Raum zu färben, wäre eine Methode in House, die den ColorRoom in der Room-Methode aufruft, aber dann ist das mehr Delegierung. (Ich möchte dies vermeiden)
Die einzige Möglichkeit, die ich sehe, ist die oben genannte, aber sieht aus wie die Rückkehr Verweis auf private Mitglied bricht OOP. Ist das ein gutes Design?Bricht reine Zusammensetzung OOP-Konzepte?
Das funktioniert gut, und für eine kurze Erklärung, siehe meine Antwort. –
Beachten Sie, dass 'virtual' sich auf * overriding * bezieht und nicht auf * overloading *. – Dario
Können Sie eine Funktion überschreiben, ohne zu erben? Zweitens, wenn der Benutzer den Raum ändern möchte, sieht es so aus, als müssten sie eine Methode von House aufrufen, die wiederum die Raummethode aufrufen würde, ähnlich wie bei der Delegation. –