我正在为我的通用二进制搜索树制作我的Node类,我有我的BSTNode类和BSTree类,它有一个唯一的指针根节点,它接受了T的BSTNode。每当我制作指针时它会显示这些错误
"之前的意外令牌';' "
•"语法错误:缺少&#39 ;;'之前'<' "
•"缺少类型说明符 - 假设为int。注意:C ++不支持default-int"
如何使用T的节点类创建唯一指针?顺便说一句,我在Visual Studio 2017中对此进行了编码。
二进制搜索树头文件:
#include "BSTNode.h"
template <typename T>
class BST
{
public:
BST();
shared_ptr<BSTNode<T>> Root;
void Insert(T newValue);
void Delete(BSTNode<T> deleteNode);
BSTNode<T> MinimumValue();
BSTNode<T> MaximumValue();
bool IsLeftChild();
bool IsRightChild();
bool isEmpty();
};
节点头文件:
#pragma once
#include <memory>
#include <iostream>
template <typename T>
class BSTNode
{
public:
BSTNode(T);
unique_ptr<T> Value;
BSTNode* Parent;
BSTNode* Right;
BSTNode* Left;
};
答案 0 :(得分:0)
你是否添加了&#34;使用命名空间std;&#34;或者在声明你的指针时使用std ::
此代码编译并运行(尽管它并没有真正做任何事情):
#include <memory>
template <typename T>
class BSTNode
{
public:
BSTNode(T) {}
std::unique_ptr<T> Value;
BSTNode* Parent;
BSTNode* Right;
BSTNode* Left;
};
template <typename T>
class BST
{
public:
BST() {}
shared_ptr<BSTNode<T>> Root;
//void Insert(T newValue);
//void Delete(TNode<T> deleteNode);
//<T> MinimumValue();
//TNode<T> MaximumValue();
//bool IsLeftChild();
//bool IsRightChild();
//bool isEmpty();
};
int main()
{
BST<int> bst;
getchar();
return 0;
}