В принципе, у меня возникают проблемы как с файлом заголовка, так и с файлом cpp с функцией поиска. Он просто говорит: «Объявление участника не найдено» и «прототип для» узла * BTree :: search (int) не соответствует ни одному классу BTree ». Я только перечислил функции поиска в файле cpp, чтобы сделать это проще, потому что мои функции insert и destroy_tree работают нормально.Реализация двоичного дерева поиска. Проблемы с компиляцией
Заголовочный файл:
#ifndef BTREE_H_
#define BTREE_H_
class BTree {
public:
struct node{
int key_value;
node *left;
node *right;
};
BTree();
virtual ~BTree();
void insert(int key);
node* search(int key);
void destroy_tree();
node *root;
private:
void insert(int key, node *leaf);
node* search(int key, node *leaf);
void destroy_tree(node *leaf);
};
#endif /* BTREE_H_ */
Реализация:
#include "BTree.h"
#include <iostream>
using namespace std;
struct node{
int key_value;
node *left;
node *right;
};
BTree::BTree() {
root = NULL;
}
BTree::~BTree() {
destroy_tree();
}
node BTree::*search(int key, node *leaf){
if(leaf != NULL){
if(key == leaf->key_value){
return leaf;
}
if(key < leaf->key_value){
return search(key, leaf->left);
}
else{
return search(key, leaf->right);
}
}
else return NULL;
}
node *BTree::search(int key){
return search(key, root);
}
Я пробовал это, но я получаю сообщение об ошибке, которое говорит, что он не может преобразовать узел * в узел :: BTree :: *, когда он возвращает лист. –