说我有一个班的脸。我希望使用构图来构建Face。脸上有眼睛,所以我可以创建一个班级的眼睛,并使用组合为眼睛添加眼睛。在运行时确定对象的选择是否可以使用C++对象组合?
但如果我眼中的子类,例如
class Eyes { ... };
class BlueEyes : public Eyes { ... };
class BrownEyes : public Eyes { ... };
? (假设接口都是相同的。)
是否有可能构成在运行时脸,说根据提供给构造函数的脸就会得到任意BlueEyes或BrownEyes一些参数?
这正是为什么有相对于继承对象组合? – iksemyonov
'Face'的类型应该是'性病的成员::的unique_ptr'并在运行时创建正确的期望类型,例如'颜色==眼睛::布朗?新的BrownEyes:新的BlueEyes“并在'unique_ptr'成员中管理该指针。 (确保'Eyes'有一个虚拟析构函数)。 –