C++ вызывает метод класса изнутри класса

У меня есть класс, который реализует связанный список. Класс имеет метод find(), который находит значение, если оно существует в связанном списке. У меня есть другой метод add(), который добавляет узел, но ТОЛЬКО если это значение, содержащееся в этом узле, НЕ существует в списке.

Итак, что я хочу сделать в моей функции add() - это использовать мой метод find вместо проверки существующего значения, так как это будет похоже на его реализацию во второй раз. У меня вопрос, как я могу вызвать метод find из другого метода в этом классе?

Я пытался позвонить this.find(x)

Но это дало мне ошибки.

Вот как выглядит мой код:

// main function
  SLList<int>list;
  list.add(20);
  list.add(14);

// SLList.h (interface and implementation)

template<typename T>
bool SLList<T>::find(const T& val) const {
  // finds value
}


template<typename T>
void SLList<T>::add(const T& x) {
  bool found = this.find(x);
  if (found) return false;

  // goes on to add a node in the Singly Linked list (SLList)
}

Итак, как я уже сказал, я хочу иметь возможность вызывать метод find из другого метода в этом классе, и я подумал, что все, что мне для этого нужно, - это обратиться к вызывающему объекту, а затем вызвать его метод find, но как я уже сказал, это дает мне кучу ошибок.

Кто-нибудь, помогите мне с тем, как я могу это назвать, спасибо!

2 ответа

Решение

Просто позвони find(x), Нет, это требуется. Также, this указатель на текущий объект Так что вам придется сделать this->find(x),

this указатель, если вы хотите использовать его, он должен быть одним из следующих способов:

this->find(x);
(*this).find(x);
find(x);

С другой стороны, ваша функция SLList<T>::add(const T& x) должен вернуться bool (не void).

Другие вопросы по тегам