我有这个奇怪的问题,我希望有一个类Script的子类的集合。但问题是我无法知道这个子类的类型,因为它们是由另一个人编写的(它是我框架的一种热点)。所以我使用了模板函数,但这不是我的强项,它给了我一个未解析的外部符号。 我甚至不知道如何在SO中搜索其他问题。 这是尝试将脚本子类添加到Scripts向量的代码:
template <class T>
T* GameObject::addComponent()
{
T *t = new T(this);
Script *s = dynamic_cast<Script*> (&t);
if (s)
{
scripts.push_back(t);
return t;
}
return nullptr;
}
它被转换为脚本以防止此泛型函数捕获其他类型的对象。 它被称为:
Cube->addComponent<myScript>();
myScript是Script的子类。 如果我编写了可怕的代码,请纠正我!
答案 0 :(得分:2)
如果我理解正确,MyScript
class MyScript : public Script
{
...
};
然后GameObj
可以收到指向Script
的指针:
GameObject::addComponent(Script * s)
{
scripts.push_back(t);
}
你可以这样称呼它:
cube->addComponent(new MyScript);