I'm having trouble creating a class object from a template class in which I need the constructor to also be a template and accept a parameter when the object is created. However, when I attempt to create the object, I receive an error message stating that I'm referencing something that doesn't exist.
Here's my code:
using namespace std;
#include <cstdlib>
template <class Node_Type>
class BinaryTree
{
public:
BinaryTree(Node_Type);
BinaryTree(Node_Type, Node_Type);
BinaryTree(Node_Type, Node_Type, Node_Type);
bool isEmpty();
Node_Type info();
Node_Type inOrder();
Node_Type preOrder();
Node_Type postOrder();
private:
struct Tree_Node
{
Node_Type Node_Info;
BinaryTree<Node_Type> *left;
BinaryTree<Node_Type> *right;
};
Tree_Node *root;
};
#endif
and my .cpp:
template <class Node_Type>
BinaryTree<Node_Type>::BinaryTree(Node_Type rootNode) {
root = rootNode;
root->left = NULL;
root->right = NULL;
}
There's more to the .cpp, but it's just other function members that are irrelevant. My constructor shown above is what I can't get to work.
In my main, I'm attempting to declare my object with the call:
BinaryTree<char> node('a');
but when I try this, I get an error message stating:
undefined reference to `BinaryTree<char>::BinaryTree(char)'
I've been trying to figure this out for two days now. I've Googled every topic I can think of and read countless examples on Stack Overflow and other sources with no help. Can anyone please explain what my problem is? I know how to do my project, and I'd be finished by now if the syntax wasn't so ridiculous in C++. Thanks in advance!
Tree_Node*is not achar..cppfile. It needs to be with your.hfile either directly within your class definition or if you don't like to place it there because of to keep it easieer to read, declare the function asinlineand move it outside the class definition, either in the same file or into a.hppwhich you include in the.hrootis of typeTree_Node*notchar