我有这样的事情:
class BinaryTree
{
...
virtual BinaryTree* GetLeft()
{
return this->root->left;
}
...
}
class BinarySearchTree : public BinaryTree
{
...
}
我的问题是,当我致电mySearchTree->GetLeft()
时,我会收到BinaryTree
类型的对象,而不是BinarySearchTree
。
有没有办法定义一个返回类型=包含类的方法?或者我应该在任何子类中重新定义GetLeft吗?
答案 0 :(得分:0)
由于GetLeft()
定义了BinaryTree
,它将始终返回BinaryTree
。但是,您可以安全地向下转换为BinarySearchTree
。在进行此操作之前,您应该测试这是否安全。
另一个想法:为什么你需要这样做?也许这表明您的BinaryTree
API并不是您想要的。