BST.hC2440 '=' не может преобразовать из 'Int' в «BST <int> :: Node *
#include "stdafx.h"
#include <iostream>
#include <cstddef>
#include <string>
using namespace std;
#ifndef BST_H_
#define BST_H_
template <class bstdata>
class BST
{
private:
struct Node
{
bstdata data;
Node* left;
Node* right;
Node() : left(NULL), right(NULL){}
Node(bstdata newdata) : left(NULL), right(NULL), data(newdata){}
};
typedef struct Node* Nodeptr;
Nodeptr root;
int size;
/** Private Helper Functions **/
void addValue(Nodeptr root, bstdata value);
void printInOrder(Nodeptr root);
public:
BST();
bool isEmpty();
int getSize();
void add(bstdata value);
bstdata getRoot();
void inOrderPrint();
};
/**Public functions*/
template <class bstdata>
BST<bstdata>::BST() : size(0), root(NULL){};
template <class bstdata>
void BST<bstdata>::add(bstdata value)
{
if (root == NULL)
{
root = new Node(value);
size++;
}
else
addValue(root, value);
}
template <class bstdata>
void BST<bstdata>::addValue(Nodeptr root, bstdata value)
{
if (value == root->data)
return;
if (value < root->data)
{
if (root->left == NULL)
{
root->left = value;
size++;
}
}
else
addValue(root-> left, value);
if (root-> right == NULL)
{
root->left = value;
size++;
}
else
addValue(root-> right, value);
}
template <class bstdata>
bstdata BST<bstdata>::getRoot()
{
if (size == 0)
cout << "getRoot: there is no root in the BST" << endl;
else
return root->data;
}
#endif
BST.cpp
// BSTTest.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include "BST.h"
#include <iostream>
#include <cstddef>
#include <string>
using namespace std;
int main()
{
BST<int> B;
B.add(5);
B.getRoot();
return 0;
}
Так ошибка, название этого сообщения, я получаю происходит дважды. Он находится в двух строках, которые читаются: root-> left = value; расположенный в функции addValue в файле заголовка. Я не уверен, почему я не могу присвоить значение указателю слева. Если кто-то может помочь, это может быть здорово.
Сообщение об ошибке кажется мне очень понятным. Каков тип 'root-> left'? Каков тип 'value'? Имеет ли смысл передавать эти две вещи друг другу? – ApproachingDarknessFish
@TuttiFruttiJacuzzi Теперь, когда я думаю об этом, я пытаюсь получить root-> left point для этого значения. – Bryan
@Bryan ваш базовый код BST также имеет ошибки. Я предложил исправить эти ошибки, чтобы оставить вопрос актуальным, но он был отклонен. [Рекомендуемое редактирование] (https://stackoverflow.com/review/spected-edits/9953382). Может быть, вы можете применить эти изменения к вопросу, если вы так чувствуете. –