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
).