具有嵌套结构的模板化类型别名

时间:2018-09-02 20:04:48

标签: c++ templates c++14 type-alias

我有一个简单的头文件,代表模板化BST实现,并且想为嵌套结构创建类型别名,但无济于事...

标题

#pragma once

#include <memory>

using namespace std;

namespace NYNE {

    template <typename T>
    class BST {

    protected:

        struct Node {
            T data;
            shared_ptr<Node> previous;
            shared_ptr<Node> next;

            Node(const T& t);
            Node(const T& t, const shared_ptr<T>& previous, const shared_ptr<T>& next);

            Node& smaller() const;
            Node& bigger() const;
        };

        int m_num_elements;

        shared_ptr<Node> m_first;

    public:

        BST();

        bool insert(const T& element);
        bool remove(const T& element);
    };
}

实施

#include "BST.h"

using namespace NYNE;

template <typename T>
BST<T>::BST() {
    m_num_elements = 0;
    m_first = nullptr;
}

template <typename T>
using typename Node = BST<T>::Node;       // <- here

template <typename T>
BST<T>::Node::Node(const T& t) {
    data = t;
    smaller() = nullptr;
    bigger() = nullptr;
}

template <typename T>
BST<T>::Node::Node(const T& t, const shared_ptr<T>& previous, const shared_ptr<T>& next) {
    data = t;
    smaller() = previous;
    bigger() = next;
}

我不知道问题出在头文件还是类型别名声明本身。

下面的编译器错误(字面意思是什么)。

  

bst.cpp(12):错误C2059:语法错误:''

感谢您的帮助。

0 个答案:

没有答案