函数模板返回指定子类的指针

时间:2013-04-26 00:16:08

标签: c++ templates pointers

我想创建一个模板化函数,它可以创建和初始化作为Actor子类的任何类的新实例,并返回子类类型的指针。我仍在试图弄清楚C ++中模板的细节,所以也许我会以完全错误的方式解决这个问题。

我的项目设置如下:基类,Actor,子类和带静态方法“spawn”的ActorFactory。

class Actor {
public:
    Actor();
    ~Actor();

    int attributeA;
    int attributeB;
    Vector3 location;
    Rotator rotation;
}

class SubA : public Actor {
public:
    SubA() {
        attributeA = 1;
        attributeB = 2;
    }
    ~SubA();
}

class SubB : public Actor {
public:
    SubB() {
        attributeA = 3;
        attributeB = 4;
    }
    ~SubB();
}

class ActorFactory {
public:
    ActorFactory();
    ~ActorFactory();

    template <class T>
    static T *spawn(Vector3 loc, Rotator rot) {
        T *actor = new T();

        actor->location = loc;
        actor->rotation = rot;

        return actor;
    }
}

然后我希望能够在我的代码中的其他地方进行这样的简单调用:

SubA *a = ActorFactory::spawn<SubA>(aVector, aRotator);

目前,在尝试调用spawn()时,我得到一个未解析的外部符号。另外,我不确定是否有办法更好地限制spawn函数的输入,除了创建新实例,然后尝试dynamic_cast以确保它是Actor的衍生物,然后再继续。有没有办法实现我的目标,或者我应该只实现一个每次返回一个Actor指针的基本工厂方法,并从那里开始工作?

0 个答案:

没有答案