在模板函数上使用dynamic_cast

时间:2015-10-13 21:49:00

标签: c++ c++11

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(...),因为根对象的内存地址在它们两者之间是不同的。

我想知道是否有什么东西我做错了或是否有可能做到这一点?

0 个答案:

没有答案