【发布时间】:2011-06-21 01:06:11
【问题描述】:
我有一个对象的继承结构,其中 begin() 和 end() 作为基类中的纯虚拟成员函数。我计划从这些对象构建一个复合结构。这个内部对象有 std::vector 成员 begin() 和 end() 从中获取数据。但是在叶子类中没有向量。现在我尝试在叶子类中找到 begin() 和 end() 的返回值。有什么好的方法可以做到这一点?
最简单的方法是在没有元素的叶子类中添加一个向量成员来为 begin() 和 end() 提供燃料,但这感觉不对。
【问题讨论】:
-
为什么感觉不对?这对我来说似乎相当直观。
-
如果不是所有派生类都可以有意义地实现一个函数,那么该函数是否在基类中?对我来说,这听起来像是糟糕设计的产物。
-
我们有没有机会看到虚拟基类的
begin和end实现? -
为叶子创建一个完全不同的类而不是节点的具体原因是什么?
-
@SoapBox 如果你仔细阅读你会发现'inner object' 和'leaf classes' 指的是复合模式。人们可能期望叶类没有任何后代,而内部类有。
标签: c++ inheritance iterator