template <class T>
bool BST<T>::search(const T& x, int& len) const
{
return search(BT<T>::root, x);
}
template <class T>
bool BST<T>::search(struct Node<T>*& root, const T& x)
{
if (root == NULL)
return false;
else
{
if (root->data == x)
return true;
else if(root->data < x)
search(root->left, x);
else
search(root->right, x);
}
}
Итак, это моя функция поиска моего класса BST с T-узлом. x — это данные, которые ищутся в дереве, len — это просто количество узлов, которые необходимо пройти, чтобы найти соответствующий узел, если он существует. Я еще не реализовал это, я просто постепенно развиваю свое задание. Я вызываю это, делая это:
if(t.search(v[1], len) == true)
cout << endl << "true";
v — это просто вектор, который я должен был создать, чтобы сравнить его с ним, и поэтому он просто снабжает его целым числом. Ошибка, которую я получаю:
BST.h: In member function âbool BST<T>::search(const T&, int&) const [with T = int]â:
prog5.cc:24: instantiated from here
BST.h:78: error: no matching function for call to âBST<int>::search(Node<int>* const&, const int&) constâ
BST.h:76: note: candidates are: bool BST<T>::search(const T&, int&) const [with T = int]
BST.h:83: note: bool BST<T>::search(Node<T>*&, const T&) [with T = int]
Поэтому я не уверен, что я делаю неправильно или где я делаю неправильно.