如何创建一个带有类型类的唯一指针? (通用)它不会让我这么做

时间:2018-02-11 04:20:05

标签: c++ generics

我正在为我的通用二进制搜索树制作我的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;
};

1 个答案:

答案 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;
}