Класс работает хорошо без шаблона, и я изменил его на класс шаблона.
Я уже пытался поместить конструктор и деструктор в заголовочный файл, и он также дает мне
Код серьезности Описание Ошибка состояния подавления строки файла проекта LNK2019 неразрешенный внешний символ «void __cdecl deleteNode (узел класса &)» (? DeleteNode @@ YAXAAV? $node@H@@@Z), на который ссылается функция «publi c: __thiscall binaryStree :: BinaryStree (void) "(?? 1? $binaryStree@H@@QAE@XZ) назначить D: \ Cpp Файлы \ CPSC \ assign \ assign.obj 1
#ifndef BST_H
#define BST_H
#pragma once
#include "functions.h"
#include <iostream>
#include <vector>
using namespace std;
template <typename T> struct expre {
T c;
expre *left = nullptr;
expre *right = nullptr;
};
template <typename T> class binaryStree;
template <typename T> class node;
template <typename T> void printBT(binaryStree<T> *tree);
template <typename T> void printBT(node<T> *Node);
template <typename T> void remove(T, binaryStree<T> *);
template <typename T> node<T> *remove(T, node<T> *);
template <typename T>
binaryStree<T> *mergeBST(binaryStree<T> *, binaryStree<T> *);
template <typename T> void mergeBST(node<T> *, binaryStree<T> *);
template <typename T> int height(binaryStree<T> *);
template <typename T> void height(node<T> *, int);
template <typename T> expre<T> *infixExprTree(string pos);
template <typename T> binaryStree<T> *makeBST(vector<T> &);
template <typename T> node<T> *findMin(node<T> *temp);
template <typename T> void insert(node<T> *Node, binaryStree<T> *);
template <typename T> void deleteNode(node<T> &n);
template <typename T> void printBT(expre<T> *t);
template <typename T> expre<T> *newNode(T c);
template <typename T> class node {
private:
T data;
node *left;
node *right;
public:
node(T data, node<T> *left, node<T> *right);
node(node<T> &other);
//~node();
template <typename T> friend class binaryStree;
friend void deleteNode(node<T> &n);
// friend void printBT(node*, int, int);
friend void makeBST(binaryStree<T> *, node<T> *, std::vector<T> &, int);
friend void printBT(node<T> *);
friend void height(node<T> *, int);
friend node *remove(T, node<T> *);
friend node *findMin(node<T> *temp);
friend void insert(node<T> *Node, binaryStree<T> *);
friend void mergeBST(node<T> *Node, binaryStree<T> *tree);
};
template <typename T> class binaryStree {
private:
node<T> *head = nullptr;
public:
binaryStree() { this->head = nullptr; }
binaryStree(vector<T> &list) { *this = *makeBST(list); }
binaryStree(node<T> *n) { this->head = n; }
~binaryStree() { deleteNode(*this->head); }
template <typename T> friend class node;
friend void printBT(binaryStree<T> *);
friend void remove(T, binaryStree<T> *);
friend node<T> *remove(T, node<T> *);
friend void makeBST(binaryStree<T> *, node<T> *, std::vector<T> &, int);
friend binaryStree *makeBST(vector<T> &);
friend binaryStree *mergeBST(binaryStree<T> *, binaryStree<T> *);
friend int height(binaryStree<T> *);
friend void height(node<T> *, int);
friend void mergeBST(node<T> *Node, binaryStree<T> *tree);
friend void insert(node<T> *Node, binaryStree<T> *);
};