我有模板类“工厂”。工厂的原型(prototype)如下:
template <class T>
class Factory
{
public:
Factory();
~Factory();
//few more functions & data-members
private:
//few more functions & data-members
};
在 main() 中,我制作了多种类型的工厂,如 --
int main()
{
typedef Factory<int> IntFactory ;
IntFactory A = IntFactory();
typedef Factory<float> FloatFactory ;
FloatFactory B = FloatFactory();
//Complex is some user defined class
typedef Factory<Complex> ComplexFactory ;
ComplexFactory C = ComplexFactory();
//Point3D is a user defined class
typedef Factory<Point3D> Point3DFactory ;
Point3DFactory D = Point3DFactory();
//I may have several such initializations.
}
问题是如果我想要,我如何制作一个对象数组 A、B、C、D 遍历它们?
最佳答案
我认为你能做的最好的,(在我的脑海中,未经测试)是:
class FactoryBase
{
public:
virtual ~FactoryBase() = 0;
};
template <class T>
class Factory : public FactoryBase
{
//...
};
int main()
{
std::vector<FactoryBase*> factories;
factories.push_back(new Factory<int>);
factories.push_back(new Factory<Complex>);
//... Make sure you delete these. Better yet, use a smart pointer.
return 0;
}
请注意指针的 vector
,所有 push_back(new ...)
东西都非常容易出现异常和泄漏...
关于c++ - 如何创建多个模板对象的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12641207/