I have a simple header file that stands for a templated BST implementation, and would like to create a type alias to a nested struct but to no avail...
Header
#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);
};
}
Implementation
#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;
}
I don't understand if the problem is with the header file or the type alias declaration itself.
Compiler error below (it literally means nothing).
bst.cpp(12): error C2059: erreur de syntaxe : ''
Any help is appreciated.