Допустим, у нас есть эти четыре класса:
- BinaryTree,
- SplayTree (который является подклассом BinaryTree),
- BinaryNode и
- SplayNode (который является подклассом BinaryNode).
В классе BinaryTree у меня есть эти 2 функции, и в SplayTree я хотел бы повторно использовать первую, потому что она работает так же, как в SplayTree.
//BinaryTree.cpp
bool Find(const T &data) const
{
Node<T> *found = Find2(data, root);
//...
}
virtual Node<T> * Find2(const T &data, Node<T> *node) const
{
//...
}
//SplayTree.cpp
using BinaryTree::Find;
virtual SplayNode<T> * Find2(const T &data, SplayNode<T> *node) const
{
//...
}
Теперь проблема в том, что когда у меня есть экземпляр SplayTree, и я вызываю Find, вызывается Binary :: Find2 вместо SplayTree :: Find2, что я и хочу.
Итак, как я могу это сделать?
EDIT:
Исправлены некоторые ошибки и реорганизован вопрос, надеюсь, теперь он понятнее.