Я пытаюсь реализовать двоичное дерево поиска. Код не является полным, но я все равно его построил, чтобы узнать, какие возможные ошибки я получу. Вот код для этого:Ошибка: ожидаемый конструктор, деструктор или преобразование типа перед токеном '*' |
BST.hclass BST {
public:
struct node
{
//All nodes must be able to point to left and right
int key; //All nodes can hold a key value
node* left; //All nodes have a left pointer
node* right;//All nodes have a right pointer
};
node* root; //References the very top of the tree
public:
BST(); //Constructor that initializes each time instance is called
node* CreateLeaf(int key);
};
BST.cpp
#include<iostream>
#include<cstdlib>
#include "BST.h"
using namespace std;
BST::BST()
{
root = NULL;
}
node* BST::CreateLeaf(int key) //Causing errors
{
node* n = new node;
n->key = key;
n->left = NULL;
n->right = NULL;
return n;
}
main.cpp
#include <iostream>
#include <cstdlib>
#include "BST.cpp"
using namespace std;
int main()
{
return 0;
}
Это дает ошибку: Ошибка: ожидаемый конструктор, деструктор или преобразование типа перед токеном '*'
В файле BST.cpp, если объявить функцию CreateLeaf(), как:
typedef node* BST::CreateLeaf(int key)
изменения ошибки в: Ошибка: ожидается инициализатор до '*' лексем
Теперь, с общим смысл, так как я заявляю функцию CreateLeaf вне класса, я делаю это:
BST::node* BST::CreateLeaf(int key)
Теперь ошибка становится: ошибки: В функции BST: множественное определение `BST :: BS T()»
Я использую CodeBlocks IDE на Windows, 10.
EDIT: я удалил файл .cpp и возвестили все функции внутри заголовка файла (и включен файл заголовка в главной функции). Теперь он компилируется. Но было бы здорово, если бы кто-нибудь мог сообщить мне, почему ошибка произошла в первую очередь.
Какое местоположение ошибки? – melpomene
Вы не включаете файлы .cpp; это не то, как он должен работать. – melpomene
https://www.youtube.com/watch?v=3FPjmO3-6IY&list=PLTxllHdfUq4d-DE16EDkpeb8Z68DU7Z_Q&index=5 Я использую это видео в качестве ссылки. Это работает для него, почему не для меня? –