скажем, в файле заголовка я могу иметь полностью определенный вспомогательный класс и использовать его в файле класса, который включает в себя заголовок. Как правильно это сделать?
// Заголовочный
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 не является именем типа в моем заголовочном файле.
Это совершенно нормально. Я сделал некоторые исправления в вашем коде.
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
конструктор.
Других решений пока нет …