【发布时间】:2016-02-05 17:40:39
【问题描述】:
我有一个类需要使用 std::queue 作为实例变量来存储一些数据。我的问题是 std::queue 要么默认使用 std::deque 作为容器类型,要么需要在编译时提供另一种容器类型。但是我想使用哪个容器取决于类用户的一些运行时数据,因此我无法在编译时指定它。在实例化 std::queue 并提供正确的容器实现之后,我不再关心容器本身,而只使用 std::queue 的接口。
我想提供的容器是 std::deque 或 boost::circular_buffer 并且都存储相同类型的元素,只是当调用者想要存储无限量的数据和循环_buffer时使用一个如果没有。
到目前为止,我发现的唯一方法是自定义抽象基类充当公共接口,并为不同的 std::queue 实例提供两个派生实现。但在那种情况下,我必须复制 std::queue 的接口,这真的很烦人。
有没有办法以这种方式声明和实例化 std::queue?类似于“std::queue with unknown/runtime provided container”。
【问题讨论】: