I am trying to write an implementation of a 2-3-4 tree in C ++. I have been using the templates for some time now and am getting some errors. Here is my extremely basic code structure:
node.h:
#ifndef TTFNODE_H #define TTFNODE_H template <class T> class TreeNode { private: TreeNode(); TreeNode(T item); T data[3]; TreeNode<T>* child[4]; friend class TwoThreeFourTree<T>; int nodeType; }; #endif
node.cpp
#include "node.h" using namespace std; template <class T> //default constructor TreeNode<T>::TreeNode(){ } template <class T> //paramerter receving constructor TreeNode<T>::TreeNode(T item){ data[0] = item; nodeType = 2; }
TwoThreeFourTree.h
#include "node.h" #ifndef TWO_H #define TWO_H enum result {same, leaf,lchild,lmchild,rmchild, rchild}; template <class T> class TwoThreeFourTree { public: TwoThreeFourTree(); private: TreeNode<T> * root; }; #endif
TwoThreeFourTree.cpp:
#include "TwoThreeFourTree.h" #include <iostream> #include <string> using namespace std; template <class T> TwoThreeFourTree<T>::TwoThreeFourTree(){ root = NULL; }
And main.cpp:
#include "TwoThreeFourTree.h" #include <string> #include <iostream> #include <fstream> using namespace std; int main(){ ifstream inFile; string filename = "numbers.txt"; inFile.open (filename.c_str()); int curInt = 0; TwoThreeFourTree <TreeNode> Tree; while(!inFile.eof()){ inFile >> curInt; cout << curInt << " " << endl; } inFile.close(); }
And when I try to compile from the command line: g ++ main.cpp node.cpp TwoThreeFourTree.cpp
I get the following errors:
In file included from TwoThreeFourTree.h:1, from main.cpp:1: node.h:12: error: 'TwoThreeFourTree' is not a template main.cpp: In function 'int main()': main.cpp:13: error: type/value mismatch at argument 1 in template parameter list for 'template<class T> class TwoThreeFourTree' main.cpp:13: error: expected a type, got 'TreeNode' main.cpp:13: error: invalid type in declaration before ';' token In file included from node.cpp:1: node.h:12: error: 'TwoThreeFourTree' is not a template In file included from TwoThreeFourTree.h:1, from TwoThreeFourTree.cpp:1: node.h:12: error: 'TwoThreeFourTree' is not a template
My main question is why he says “mistake:“ TwoThreeFourTree is not a template. ”Anyone have any ideas? Thanks for all the advice / help in advance ... Dan
source share