class Room{
public:
void ColorRoom(){};
};
class House{
public:
Room* GetRoom(){return &m_room;}
private:
Room m_room;
};
1) Pokój nie może istnieć bez domu, dom "ma" pokój. (skład)
2) Innym sposobem na kolorowanie pokoju byłoby posiadanie w House metody, która wywołałaby metodę ColorRoom in Room, ale jest to bardziej delegacja. (chcę tego uniknąć)
Jedyny sposób, jaki widzę, to ten powyżej, ale wygląda na to, że powracający odnośnik do prywatnego członka łamie OOP. Czy to dobry projekt?Czy czysta kompozycja łamie koncepcje OOP?
To działa dobrze, a po krótkim objaśnieniu zobacz moją odpowiedź. –
Należy zauważyć, że "wirtualny" odnosi się do * przesłaniania *, a nie * przeciążania *. – Dario
Czy można zastąpić funkcję bez dziedziczenia? Po drugie, jeśli użytkownik chce zmodyfikować pokój, wygląda na to, że musi wywołać metodę House, która z kolei wywoła metodę room, podobnie jak delegacja. –