Связанный список в классе и должен вызываться через функцию из класса

Вот заголовок файла

class sv1{
private:
struct Node{
string title;
Node* next;
};
public:
void InsertAfter(Node **head, string title);
void getMetadata(string t);
void q_folder(string t_q);

Вот как будет выглядеть файл cc

void sv1::getMetadata(string t)
{
Node *head=NULL;
title=t;
q_folder(title);
}
void sv1::q-folder(string t_q)
{
InsertAfter(&head,t_q);
}
void sv1::insertAfter(Node **head,string title)
{
if (head==NULL)
{
Node* temp=NULL;
temp=new Node;
temp->title=title;
*head=temp;
}
else{
Node *temp= new Node;
temp= new Node;
temp->title=title;
temp->next=(*head)->next;
(*head)->=temp;

}
}

Ошибка говорит о том, что голова не объявлена ​​в функции q_folder. Что вызывает это и как я могу решить это?

0

Решение

В вашем методе q-folder вы вызываете insertAfter с помощью «&голова «. Единственный способ, которым голова может быть узнаваема в любом методе класса — это если

  1. Местный
  2. параметр
  3. Член класса (наследуется или нет)
  4. Глобальный (однако, считаю это нет-нет)

Видя, что это не один из трех, он не знает, что вы подразумеваете под «&head «. Кроме того, как упомянуто исправление hmjd, ни один из ваших объявленных методов не помечен как принадлежащий этому классу. Вы написали их так, как если бы они были отдельными методами, независимыми от какого-либо класса. Чтобы указать, что они принадлежат классу sv1, вам необходимо добавьте «sv1 ::» в начало имени метода.

5

Другие решения

Я думаю, что вы преследуете неправильный шаблон. Почему вы определили структуру Node внутри приватной секции класса!? Обычный шаблон заключается в том, что вы должны разделить классы для самого Node и LinkedList. Пожалуйста, создайте другой класс, который инкапсулирует ваш узел. Также вы можете реализовать это с помощью шаблонов для поддержки различных типов данных.

Также head является внутренней переменной Вы не должны принимать это как аргумент функции. Это не объектно-ориентированный, потому что ваш связанный список (если он работает) не согласован и все определяющие переменные открыты для изменения. Вы должны сделать head личное для LinkedList. Здесь вы можете найти несколько примеров:

Простой C / C ++ связанный список

Как создать связанный список с использованием C / C ++

0

По вопросам рекламы [email protected]