看起来我对C++有一个基本的误解:<
我喜欢多态容器解决方案.谢谢你,因为我引起了我的注意:)
因此,我们需要创建一个相对通用的容器类型对象.它也恰好封装了一些与业务相关的逻辑.但是,我们需要在这个容器中存储基本上任意的数据 - 从原始数据类型到复杂类.
因此,人们会立即跳到模板类的想法并完成它.但是,我注意到C++多态性和模板不能很好地结合在一起.由于存在一些我们将要工作的复杂逻辑,我宁愿坚持使用模板或多态,而不是试图通过同时做两者来对抗C++.
最后,鉴于我想做一个或另一个,我更喜欢多态.我发现更容易表示像"这个容器包含可比类型"这样的约束 - 一个la java.
让我谈到问题的主题:最抽象的是,我想我可以拥有一个"容器"纯虚拟界面,它具有类似于"push(void*data)和pop(void*data)"的东西(用于记录) ,我实际上并没有尝试实现堆栈).
但是,我并不喜欢顶级的void*,更不用说每次我想要为具体容器可以使用的数据类型添加约束时签名都会改变.
总结:我们有相对复杂的容器,有各种方法来检索元素.我们希望能够改变可以进入容器的元素的约束.元素应该与多种容器一起使用(只要它们满足特定容器的约束).
编辑:我还应该提到容器本身需要是多态的.这是我不想使用模板化C++的主要原因.
那么 - 我应该放弃对Java类型接口的热爱并使用模板吗?我应该使用void*并静态地投射一切吗?或者我应该使用一个空类定义"元素"来声明什么,并将其用作"元素"层次结构中的顶级类?
我喜欢堆栈溢出的原因之一是许多响应提供了一些我甚至没有考虑过的其他方法的有趣见解.所以,请提前感谢您的见解和意见.