【发布时间】:2011-05-13 22:30:21
【问题描述】:
我想要一个存储接口(抽象类)和一组存储实现(SQLite、MySQL、Memcached..),用于存储已知类的对象并从存储中检索子集。
对我来说,清晰的界面是:
class Storable{int id; blah; blah; blah; string type;};
class Storage{
virtual Storage::iterator get_subset_of_type(string type) = 0;
virtual Storage::iterator end)_ = 0;
virtual void add_storable(Storable storable) = 0;
};
然后创建满足接口的存储实现。现在,我的问题如下:
- 迭代器不能是多态的,因为它们是按值返回的。
- 我不能只为给定的 Storage 实现子类 Storage::iterator
- 我曾考虑使用一个包装迭代器来包装并在 Storage 实现子类的多态类型上执行 pimpl,但随后我需要使用动态内存并在所有地方进行分配。
有什么提示吗?
【问题讨论】:
标签: c++ class iterator polymorphism subclass