У меня есть класс с именем BinaryNode, и я хочу создать указатель на конкретный c его экземпляр. Однако в этой строке кода, когда я устанавливаю указатель, отладчик показывает, что по какой-то причине он вызывает совершенно не связанный метод с именем getRight.
template <typename ItemType, typename Keytype>
void BST<ItemType, Keytype>::recAdd(ItemType entry, BinaryNode<ItemType>* subtree)
{
if (subtree->getEntry() == entry)
{
throw(runtime_error("Error: recAdd attempted with a duplicate value.\n"));
}
else if (subtree->getEntry() < entry)
{
if (subtree->getRight() == nullptr)
{
BinaryNode<ItemType>* temp = nullptr; // The pointer in question
temp = new BinaryNode<ItemType>(entry);
subtree->setRight(temp);
}
else
{
recAdd(entry, subtree->getRight());
}
}
else
{
if (subtree->getLeft() == nullptr)
{
BinaryNode<ItemType>* temp = nullptr;
temp = new BinaryNode<ItemType>(entry);
subtree->setLeft(temp);
}
else
{
recAdd(entry, subtree->getLeft());
}
}
}
Вот getRight в файле реализации BinaryNode:
template<typename T>
BinaryNode<T>* BinaryNode<T>::getRight() const
{
return(m_right);
}
Вот изображение отладчика
Любая помощь будет принята с благодарностью.
Makefile:
pokedex: main.o Pokemon.o Executive.o Tester.o
g++ -O0 -g -std=c++11 -Wall main.o Pokemon.o Executive.o Tester.o -o pokedex
main.o: main.cpp
g++ -O0 -g -std=c++11 -Wall -c main.cpp
Pokemon.o: Pokemon.h Pokemon.cpp
g++ -O0 -g -std=c++11 -Wall -c Pokemon.cpp
Tester.o: Tester.h Tester.cpp
g++ -O0 -g -std=c++11 -Wall -c Tester.cpp
Executive.o: Executive.h Executive.cpp BST.h BST.cpp BinarySearchTreeInterface.h BinaryNode.h BinaryNode.cpp
g++ -O0 -g -std=c++11 -Wall -c Executive.cpp
clean:
rm *.o pokedex