Реализация вспомогательного класса в заголовочном файле

скажем, в файле заголовка я могу иметь полностью определенный вспомогательный класс и использовать его в файле класса, который включает в себя заголовок. Как правильно это сделать?
// Заголовочный

class LinkedList() {
public:
LinkedList(int a);
private:
Node *root;
class Node {
int data;
Node *next;
};
};

// файл cpp

#include "LinkedList"LinkedList::LinkedList(int a) {
root = new Node();
root.data = a;
root->next = NULL;
}

когда я пытаюсь сделать что-то подобное, в конечном итоге я говорю, что Node не является именем типа в моем заголовочном файле.

0

Решение

Это совершенно нормально. Я сделал некоторые исправления в вашем коде.

LinkedList.h

class LinkedList
{
public:
LinkedList(int a);
private:
class Node {
public:
int data;
Node *next;
};
Node *root;
};

LinkedList.cpp

LinkedList::LinkedList(int a) {
root = new Node();
root->data = a;
root->next = NULL;
}

Вы пытались использовать Node прежде чем вы даже объявили и определили это. Уровень доступа по умолчанию в классах C ++ является закрытым, поэтому вы не можете получить доступ к закрытым данным членов Node в LinkedList конструктор.

0

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

Других решений пока нет …

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