Question: C + + VisualStudio. I have a BinaryNodeTree.h header file and its implementation BinaryNodeTree.cpp . I m getting seven errors in the . cpp file.

C++ VisualStudio. I have a BinaryNodeTree.h header file and its implementation BinaryNodeTree.cpp. Im getting seven errors in the .cpp file. Due to the word limit below I will only put the methods Im having trouble with along with their respective errors. I would appreciate a practical complete fix with comments. Due to formatting issues the includes aren't appearing and the template isn't appearing. BinaryNodeTree.h includes memory and the template is class ItemType. BinaryNodeTree.h:
#ifndef BINARY_NODE_TREE_
#define BINARY_NODE_TREE_
#include "BinaryTreeInterface.h"
#include "BinaryNode.h"
#include "PrecondViolatedExcept.h"
#include "NotFoundException.h"
#include
template
class BinaryNodeTree : public BinaryTreeInterface
{
private:
std::shared_ptr> rootPtr;
protected:
int getHeightHelper(std::shared_ptr> subTreePtr) const;
int getNumberOfNodesHelper(std::shared_ptr> subTreePtr) const;
auto balancedAdd(std::shared_ptr> subTreePtr, std::shared_ptr> newNodePtr);
virtual auto removeValue(std::shared_ptr> subTreePtr, const ItemType target, bool& isSuccessful);
auto moveValuesUpTree(std::shared_ptr> subTreePtr);
virtual auto findNode(std::shared_ptr> subTreePtr, const ItemType& target, bool& isSuccessful) const;
auto copyTree(const std::shared_ptr> oldTreeRootPtr) const;
void destroyTree(std::shared_ptr> subTreePtr);
void preorder(void visit(ItemType&), std::shared_ptr> treePtr) const;
void inorder(void visit(ItemType&), std::shared_ptr> treePtr) const;
void postorder(void visit(ItemType&), std::shared_ptr> treePtr) const;
public:
BinaryNodeTree();
BinaryNodeTree(const ItemType& rootItem, const std::shared_ptr> leftTreePtr, const std::shared_ptr> rightTreePtr);
BinaryNodeTree(const std::shared_ptr>& tree);
virtual ~BinaryNodeTree();
bool isEmpty() const;
int getHeight() const;
int getNumberOfNodes() const;
ItemType getRootData() const throw(PrecondViolatedExcept);
void setRootData(const ItemType& newData);
bool add(const ItemType& newData);
bool remove(const ItemType& data);
void clear();
ItemType getEntry(const ItemType& anEntry) const throw(notFoundException);
bool contains(const ItemType& anEntry) const;
void preorderTraverse(void visit(ItemType&)) const;
void inorderTraverse(void visit(ItemType&)) const;
void postorderTraverse(void visit(ItemType&)) const;
BinaryNodeTree& operator=(const BinaryNodeTree& rightHandSide);
};
#endif
First four errors in .cpp: Declaration is incompatible with the method declared in the header file:
template
std::shared_ptr> BinaryNodeTree::moveValuesUpTree(std::shared_ptr> subTreePtr)
{
auto leftPtr = subTreePtr->getLeftChildPtr();
auto rightPtr = subTreePtr->getRightChildPtr();
int leftHeight = getHeightHelper(leftPtr);
int rightHeight = getHeightHelper(rightPtr);
if (leftHeight > rightHeight)
{
subTreePtr->setItem(leftPtr->getItem());
leftPtr = moveValuesUpTree(leftPtr);
subTreePtr->setLeftChildPtr(leftPtr);
return subTreePtr;
}
else
{
if (rightPtr != nullptr)
{
subTreePtr->setItem(rightPtr->getItem());
rightPtr = moveValuesUpTree(rightPtr);
subTreePtr->setRightChildPtr(rightPtr);
return subTreePtr;
}
else
{
return nullptr;
}
}
}
template
std::shared_ptr> BinaryNodeTree::removeValue(std::shared_ptr> subTreePtr,
const ItemType target,
bool& success)
{
if (subTreePtr == nullptr)
return subTreePtr;
if (subTreePtr->getItem()== target)
{
subTreePtr = moveValuesUpTree(subTreePtr);
success = true;
return subTreePtr;
}
else
{
auto targetNodePtr = removeValue(subTreePtr->getLeftChildPtr(), target, success);
subTreePtr->setLeftChildPtr(targetNodePtr);
if (!success)
{
targetNodePtr = removeValue(subTreePtr->getRightChildPtr(), target, success);
subTreePtr->setRightChildPtr(targetNodePtr);
}
return subTreePtr;
}
}
template
auto BinaryNodeTree::findNode(std::shared_ptr> treePtr,
const ItemType& target,
bool& success) const
{
if (treePtr == nullptr)
return treePtr;
if (treePtr->getItem()== target)
{
success = true;
return treePtr;
}
else
{
std::shared_ptr> targetNodePtr = findNode(treePtr->getLeftChildPtr(), target, success);
if (!success)
{
targetNodePtr = findNode(treePtr->getRightChildPtr(), target, success);
}

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Programming Questions!