Я пытаюсь написать класс связанного списка с некоторыми базовыми функциями, такими как добавление узла, удаление узла и поиск рекурсивно в списке. Я определил главу списка как приватную переменную, но мне нужно получить к ней доступ для функции рекурсивного поиска, поэтому я попытался определить функцию GetHead(), которая вернет указатель на голову. Однако у меня возникают проблемы с его компиляцией в NetBeans.Возвращение указателя на struct в связанном списке class
Вот заголовок класса
class List{
private:
typedef struct node{
int data;
node* next;
}*nodePtr;
nodePtr head;
nodePtr curr;
nodePtr temp;
public:
List();
void AddNode(int addData);
void DelNode(int delData);
void PrintList();
void SearchRecursive(nodePtr Ptr, int searchVal);
nodePtr GetHead();
};
Функция GetHead() выглядит следующим образом:
nodePtr List::GetHead(){
return head;
}
Когда я компилирую, я получаю
error: unknown type name 'nodePtr'
error: cannot initialize return object of type 'int'
with an lvalue of type 'nodePtr' (aka 'List::node *')
Есть проблема в как я возвращаю указатель на узел структуры?
'nodePtr GetHead();' Это не будет работать для области доступа public, так как 'nodePtr' объявлен в разделе' private' class. –
@ πάνταῥεῖ На самом деле, он работает, если вы используете 'auto'. Пока вы не называете частную вещь ... – juanchopanza
@juanchopanza Ах, THX! Полезно знать, не думал о 'auto'. –