我想在mixin class
中创建,通过多层继承为一个具体类型的最终类赋予class
工厂方法。更具体地说,我想让工厂方法生成一个实际对象的新实例,它被称为成员。
因此,类“factory”由类A
继承,类A
由类B
继承,我想找到一种方法B::create()
和创建B
的实例。据我所知,这排除了使用类A
中的类型的模板,因为B::create()
会产生A
的实例。
答案 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)
你做不到。除非您通过模板参数或其他方式自行注入此类知识,否则基类中的代码对任何派生类都一无所知。没有办法自动完成。