我正在尝试将子对象传递给通过模板化函数将父对象作为参数的函数。
Parent* getParent( Parent* parent );
template<typename T>
T* getParent()
{
return (T*) getParent( new T )
}
Parent* getParent( Parent* parent );
函数只需要new T
,以便获取子类在其构造函数中设置的父级信息。这是一种不好的做法吗?有没有更好的方法可以通过铸造实现这一目标?
之前,我使用过这样的函数:
Parent* getParent( ChildType type )
{
//return requires the use of type
}
它是通过
调用的test.getParent<ChildClass>( ChildType::TYPE );
现在发布的第一个方法允许我使用它来代替
test.getParent<ChildClass>();
由于ChildClass
构造函数初始化type
构造函数中的Parent
字段,因此更为直接
Parent* getParent( Parent* parent )
{
ChildType type = parent->m_type;
delete parent;
//return using type
}