Неразрешенный внешний символ LNK 2019 и 1120 c ++ - PullRequest
0 голосов
/ 12 апреля 2020

Класс работает хорошо без шаблона, и я изменил его на класс шаблона.

Я уже пытался поместить конструктор и деструктор в заголовочный файл, и он также дает мне

Код серьезности Описание Ошибка состояния подавления строки файла проекта 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> *);
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...