header/cpp file combined in .h file since using templates:
Code:
template <class Entry>
struct Binary_node
{
Entry data;
Binary_node<Entry> *left;
Binary_node<Entry> *right;
Binary_node(); //constructors
Binary_node(const Entry &x);
};
template <class Entry>
class Binary_tree
{
public:
Binary_tree();
void insert(const Entry &);
private:
Binary_node<Entry> *root;
void recursive_insert (Binary_node<Entry> *&sub_root, const Entry &data);
};
template <class Entry>
Binary_node<Entry>::Binary_node()
{left=right=NULL;}
template <class Entry>
Binary_tree<Entry>::Binary_tree()
{
this->root=NULL;
}
template <class Entry>
void Binary_tree<Entry>::insert(const Entry &data)
{
recursive_insert(root,data);
}
template <class Entry>
void Binary_tree<Entry>::recursive_insert(Binary_node<Entry> *&sub_root, const Entry &data)
{
if (sub_root==NULL)
sub_root=new Binary_node<Entry>(data);
else
if (data.key<sub_root->data.key)
recursive_insert(sub_root->left,data);
else
recursive_insert(sub_root->right,data);
}
Main:
Code:
struct datanode
{
int key;
float gpa;
};
int main ()
{
Binary_tree<datanode> tree;
datanode data;
data.key=89;
data.gpa=3.3;
tree.insert(data);
}
Getting this linker error:
error LNK2019: unresolved external symbol "public: __thiscall Binary_node<struct datanode>::Binary_node<struct datanode>(struct datanode const &)" (??0?$Binary_node@Udatanode@@@@QAE@ABUdatanode@@@Z ) referenced in function "private: void __thiscall Binary_tree<struct datanode>::recursive_insert(struct Binary_node<struct datanode> * &,struct datanode const &)" (?recursive_insert@?$Binary_tree@Udatanode@@@@AAEX AAPAU?$Binary_node@Udatanode@@@@ABUdatanode@@@Z)
[edit] - Sorry copied the wrong main, corrected... linker error is for the current one.