【发布时间】:2020-05-20 15:29:26
【问题描述】:
我需要一个函数来从另一个类的组件数组中找到一个类类型的组件。
此功能不起作用,使用时会给出“类型名称不允许”...
template<typename T> auto* GetComponent(T& comp)
{
for (int i = 0; i < Components.size(); ++i)
{
if (static_cast<T*>(Components.at(i))) return Components.at(i);
}
}
【问题讨论】:
-
(1) 错误消息包含更多的文本。不用转述,直接复制全文。 (2) 即使修复了该错误,从长远来看,此函数也不会执行您想要的操作,因为
static_cast不会进行运行时类型检查(我假设您想要 check i> 对象的类型正确)。 -
那么如何从基类的向量中获取指定派生类的对象呢?
-
dynamic_cast似乎比static_cast更合适。