Thursday, September 27, 2018

c++ - Creating a template class object using a template constructor



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

template
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 *left;
BinaryTree *right;
};

Tree_Node *root;

};

#endif


and my .cpp:



template 
BinaryTree::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 node('a');


but when I try this, I get an error message stating:



undefined reference to `BinaryTree::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 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!


Answer



Template code should be visible at the time of instantiation, meaning that the definition of the functions must also be in the header.


No comments:

Post a Comment

plot explanation - Why did Peaches' mom hang on the tree? - Movies & TV

In the middle of the movie Ice Age: Continental Drift Peaches' mom asked Peaches to go to sleep. Then, she hung on the tree. This parti...