BST.h
template<typename T,typename S>
class Node
{
public:
Node(T a, S b, int c);
~Node();
private:
T key;
S value;
Node* left;
Node * right;
int N;
};
template<typename T, typename S>
Node<T, S>::~Node()
{
}
template<typename T, typename S>
Node<T,S>::Node(T _key,S _value,int _N)
{
}
template<typename T, typename S>
class BST
{
public:
BST();
~BST();
int size(Node<T,S> *node){ return node.N; }
int size(){ return size(root); }
S get(T value);
void put(T key, S value);
private:
Node<T, S> *root;
S _get(Node<T, S> *x, T key);
void _put(T key, S value);
};
template<typename T, typename S>
BST<T,S>::BST()
{
}
template<typename T, typename S>
BST<T,S>::~BST()
{
}
BST.cpp
#include"BST.h"
template<typename T, typename S>
void BST<T, S>::_put(T key, S value){
}
template<typename T, typename S>
void BST<T, S>::put(T key, S value){
_put(key, value);
}
template<typename T, typename S>
S BST<T, S>::_get(Node<T, S> *x, T key){
if (x == nullptr)return NULL;
return NULL;
}
template<typename T, typename S>
S BST<T, S>::get(T key){
return _get(root, key);
}
main函数调用的时候,#include"BST.cpp"
而不是"#include"BST.h"
否则会报出error LNK2019: 无法解析的外部符号,XXXXX该符号在函数 _main 中被引用
还有个方法就是main函数#include"BST.h",
把BST.cpp 的内容全部放在BST.h 中去,删除BST.cpp。也可以正常编译运行