c++ - 如何创建多个模板对象的数组

标签 c++ arrays templates

我有模板类“工厂”。工厂的原型(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/

相关文章:

C++ 不会退出 do while 循环

c++ - _mm_mul_epu32 与 _mm_mul_epi32

ios - 我们如何在ios中将DateAndTime设置为升序

python - 在带有 pytorch 数据加载器的开始和结束的 zarr 数组上创建生成器

c++ - 如何为类特定的 typedef (c++17) 启用自动类型推导?

c++ - 指针非类型模板参数

c++ - 从 Fortran 调用 C 函数,其中 C 函数名称最初是从 C 传入的

c++ - 如何在 opencv c++ 中从实时视频提要的帧上画一条线

javascript - 如何测试 forEach 调用 savePost 三次?

c++ - 查找类型是否具有特定成员的更通用方法?