Несвязанный метод объекта вызывается при создании указателя на объект - PullRequest
0 голосов
/ 02 мая 2020

У меня есть класс с именем 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);
}

Вот изображение отладчика

Here is a picture of the debugger

Любая помощь будет принята с благодарностью.

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...