我正在为组件创建实现工厂模式,并希望为工厂创建的每种类型的所有实例实现一个单例容器。理想情况下,这将是工厂中创建的每种类型的一个向量。
如果我可以将基类指针保留在向量中,这将非常容易,但是我的用例非常希望所有实例都连续存储,而不是 new 将它们放在任何地方以获得尽可能多的缓存命中。
我正在考虑为工厂地图做这样的事情:
Map<string,pair<constructorFnPtr, vector<baseClass>>
这具有丢失派生类中的数据的问题,因为它被强制转换为基类。
我还认为将指向向量的指针作为该对的第二个成员将是一个很好的方法,但我不确定如何在每个向量中存储不同的数据类型的同时实现这一点。我认为这是不可能的,因为模板化的向量在技术上都是不同的类。
有什么办法可以做我想做的事吗?在过去的几天里,我一直试图弄清楚一些事情,但没有运气。
或者,如果有另一种存储向量的好方法(即作为组件类的静态成员),我也愿意接受任何类似的建议!