|
|
1
3
我建议公开容器类中的迭代器,而不是成员容器。这样,容器类型就不重要了。 |
|
2
3
问题是,您试图以一种不起作用的方式混合和匹配两种不同的、几乎独立的多态性。模板的编译时类型安全多态性不允许用基类型替换派生类型。C++的模板系统不与
和
一个建议可能是创建一个Foo派生的适配器,该适配器将向下转换到正确的类:
请注意,此类将与迭代器有相同的问题,对向量的操作可能会使此类无效。 另一种想法 您可能没有意识到这一点,但是只返回一个Foo向量就可以了。Bar的用户必须已经完全了解Foo,因为通过包含Bar.h,他们必须通过Bar.h获得Foo.h。原因是为了让Bar从Foo继承,它必须通过Foo.h完全了解类。如果可能的话,我建议不要使用上面的解决方案,而是将Foo(或Foo的一个超类)作为接口类,并传递指向该接口类的指针向量。这是一个非常常见的模式,不会引起我提出的这个古怪的解决方案可能会引起的注意:)。那么你可能又有你的理由了。祝你好运。 |
|
|
3
2
|
|
|
4
2
问题是,你为什么要这么做?如果给用户一个指向Bar的指针集合,则假定其中只有Bar,因此在内部将指针存储在指向Foo的集合中是没有意义的。如果在指向Foo的指针集合中存储了Foo的不同子类型,则不能将其作为指向Bar的指针集合返回,因为其中并非所有对象都是Bar。 在第一种情况下,(您知道您只有条形图),您应该使用上面建议的模板化方法。 否则,你必须重新思考,你真正想要的是什么。 |
|
|
5
1
|
|
|
6
1
你有特殊需要吗
现在我们添加了一个
questions 关于 casting containers 有关此主题的更多答案,请参阅派生类型的列表。。。 |
|
7
1
首先,让我们谈谈
这是一个非常方便的方法。在封面下,它只是执行一个
您不能传递引用,但可以传递引用
基本上是
这里真正的问题当然是
注
:
特别是,使用
附注2
:
|
|
AstralHex · 矩阵乘法代码工作不正常 1 年前 |
|
|
Fishie · 作为类成员的智能指针是否仍然自动释放?[关闭] 1 年前 |
|
|
Die4Toast · 递归调用成员箭头运算符-> 1 年前 |
|
|
Anka Hanım · 关于结构和动态数组地址的问题 1 年前 |