类工厂mixin

时间:2011-06-04 22:33:06

标签: c++

我想在mixin class中创建,通过多层继承为一个具体类型的最终类赋予class工厂方法。更具体地说,我想让工厂方法生成一个实际对象的新实例,它被称为成员。

因此,类“factory”由类A继承,类A由类B继承,我想找到一种方法B::create()和创建B的实例。据我所知,这排除了使用类A中的类型的模板,因为B::create()会产生A的实例。

2 个答案:

答案 0 :(得分:2)

也许CRTP会这样做? http://en.wikipedia.org/wiki/Curiously_recurring_template_pattern

template <typename T>
struct Mixin
{
    T * create() const { return new T; }
};

class Target : public Mixin<Target>
{
    ...
};

答案 1 :(得分:1)

你做不到。除非您通过模板参数或其他方式自行注入此类知识,否则基类中的代码对任何派生类都一无所知。没有办法自动完成。