我想查找给定类型的所有对象并将它们添加到向量中。 现在我有一些代码:如何查找在可变参数模板参数中给出的所有类对象
template<class T>
void fill1(std::vector<Character*> &vec2)
{
for (int i = 0; i < GameObject::allObjects.size(); i++)
{
if (dynamic_cast<T>(GameObject::allObjects[i]))
{
vec2.push_back(dynamic_cast<Character*>(GameObject::allObjects[i]));
}
}
}
template<class First, class ...T>
void fill2(std::vector<Character*> &vec2)
{
fill1<First>(vec2);
fill2<T...>(vec2);
}
template<class ... T>
std::vector<Character*> SpecialList<T...>::get()
{
std::vector<Character*> vec2;
fill2<T...>(vec2);
return vec2;
}
的代码不会编译的。 我们得到的错误是: 不能推导出模板参数为“第一”
我知道,所有给定类型从阶级性继承和我有我的所有对象的矢量(游戏物体:: allObjects)。
轻移你在正确的方向:你期望发生的时候'fill2( vec2);当'T'是一个空类型列表时调用''? –
cdhowie
问题是我不太明白。我希望如果没有争论就会结束。我不知道如何检查是否有任何问题。 – semidude
那么,如果没有至少一个模板参数:'First',你就不能实例化'fill2()'。 – cdhowie