template <typename T> void findType(T *obj, TFmxChildrenList *children)
{
if(children == NULL || children->Count < 1)
obj = NULL;
else
{
for(int i=0; i < children->Count; i++)
{
if(children->Items[i]->ClassNameIs(T::ClassName()))
obj = dynamic_cast<T*>(children->Items[i]);
else
this->findType<T>(obj, children->Items[i]->Children);
}
}
}
被叫:
TRectangle *rc;
findType<TRectangle>(rc, children);
我想要做的是在运行时通过一个对象下降来找到一个类型的对象。然而,当将它转换为该类型时,它返回一个相当不同的对象,而不是如果我执行了dynamic_cast(...),因为根对象的内存地址在它们两者之间是不同的。
我想知道是否有什么东西我做错了或是否有可能做到这一点?