我有一个简单的头文件,代表模板化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:语法错误:''
感谢您的帮助。