2021年3月14日星期日

'Class' does not name a type and expected initializer before '<' token error

I am implementing a templated class to make a Binary Search Tree, but upon compilation I get the following errors:

BinaryNodeTree.cpp:7:1: error: 'BinaryNodeTree' does not name a type  7 | BinaryNodeTree<ItemType>::BinaryNodeTree(){    | ^~~~~~~~~~~~~~    BinaryNodeTree.cpp:18:1: error: 'BinaryNode' does not name a type  18 | BinaryNode<ItemType>* BinaryNodeTree<ItemType>::newTree(const BinaryNode<ItemType>* cTree) m   const{    | ^~~~~~~~~~  BinaryNodeTree.cpp:31:20: error: expected initializer before '<' token   31 | void BinaryNodeTree<ItemType>::add(const ItemType& newData){      |                    ​^    BinaryNodeTree.cpp:38:1: error: 'BinaryNode' does not name a type   38 | BinaryNode<ItemType>* BinaryNodeTree<ItemType>::inOrderAdd(BinaryNode<ItemType>* subPtr,   BinaryNode<ItemType>* newNodePtr){    | ^~~~~~~~~~  BinaryNodeTree.cpp:59:24: error: expected initializer before '<' token  59 | ItemType BinaryNodeTree<ItemType>::getEntry(const int& value) const{  

..etc.. for all my classes. Here is my .h file followed by my CPP file:

BinaryNodeTree.h:

#ifndef BINARY_NODE_TREE  #define BINARY_NODE_TREE    #include "BinaryNode.h"  #include "NotFoundException.h"  #include <iostream>    template<class ItemType>  class BinaryNodeTree //:public BinaryTreeInterface<ItemType>  {    private:     BinaryNode<ItemType>* rootPtr;    protected:     //------------------------------------------------------------     // Protected Utility Methods Section:     // Helper methods for public methods.     //------------------------------------------------------------     int getNumberOfNodesHelper(BinaryNode<ItemType>* subTreePtr) const;     BinaryNode<ItemType>* removeValue(BinaryNode<ItemType>* subTreePtr, const int& target, bool& success);     BinaryNode<ItemType>* removeNode(BinaryNode<ItemType>* nodeToDeletePtr);     BinaryNode<ItemType>* removeLeftmostNode(BinaryNode<ItemType>* nodeToDeletePtr, ItemType& inorderSuccessor);     bool isLeaf(BinaryNode<ItemType>* nodeToDeletePtr);     void destroyTree(BinaryNode<ItemType>* subTreePtr);     BinaryNode<ItemType>* findNode(BinaryNode<ItemType>* subTreePtr, int value) const;     void inorderHelper(void visit(ItemType&), BinaryNode<ItemType>* subTreePtr) const;     void preorderHelper(void visit(ItemType&), BinaryNode<ItemType>* subTreePtr) const;     void postorderHelper(void visit(ItemType&), BinaryNode<ItemType>* subTreePtr) const;     void levelOrderHelper(void visit(ItemType&), BinaryNode<ItemType>* subTreePtr, int level);     BinaryNode<ItemType>* inOrderAdd(BinaryNode<ItemType>* subPtr, BinaryNode<ItemType>* newNodePtr);     BinaryNode<ItemType>* newTree(const BinaryNode<ItemType>* cTree) const;     //BinaryNode<ItemType>* getLeftmostNodeHelper(BinaryNode<ItemType>* nodeToGetPtr, ItemType& inorderSuccessor);    public:     //------------------------------------------------------------     // Constructor and Destructor Section.     //------------------------------------------------------------     BinaryNodeTree(); // creates an empty BST     //BinaryNodeTree(const BinaryNodeTree<ItemType>& tree);     ~BinaryNodeTree();       //------------------------------------------------------------     // Public Methods Section.     //------------------------------------------------------------     bool isEmpty() const;     int getNumberOfNodes() const;     void add(const ItemType& newEntry);     bool remove(const int& value); //throw(NotFoundException);     ItemType getEntry(const int& value) const; //throw(NotFoundException);     bool contains(const int& value) const;     ItemType getRootData() const;     void setRootData(const ItemType& newData);     void clear();     //ItemType getLeftmostNode();     int getHeight(BinaryNode<ItemType>* subTreePtr) const;     //------------------------------------------------------------     // Public Traversals Section.     //------------------------------------------------------------     void levelOrderTraverse(void visit(ItemType&));     void preorderTraverse(void visit(ItemType&)) const;     void inorderTraverse(void visit(ItemType&)) const;     void postorderTraverse(void visit(ItemType&)) const;       //------------------------------------------------------------  };   // end BinaryNodeTree  #include "BinaryNodeTree.cpp"  

没有评论:

发表评论