Хорошо, вот моя проблема, если проблема вообще.Связанный список с вложенными классами: как я могу использовать вложенный тип класса до его объявления?
Я строю связанный список.
Этот связанный список состоит из элементов в форме класса.
Таким образом, у меня есть класс, называемый, допустим, linked_list
и вложенный номер, который называется только node
.
Очевидно, что основной класс предназначен для обработки узлов и предоставления некоторых функций для взаимодействия с ними.
Вот проект, как это должно выглядеть:
class linked_list
{
public:
linked_list();
~linked_list();
void setFirst(node *firstIn){first = firstIn;}
node* getFirst(){return first};
void forward();
void forward(unsigned char);
private:
node *first;
node *current;
class node
{
public:
node();
~node();
void function1();
void function2();
private:
int various_data;
node *next;
};
};
Теперь, как вы можете себе представить, компилятор дает мне ошибку (два, на самом деле), который говорит мне, что node
тип/класс имеет еще не объявлен, когда я использую его в публичном разделе класса linked_list
для объявления аргументов функций и возвращаемых типов.
Я предполагаю, что я мог бы просто инвертировать public:
и private:
секции таким образом, что декларация node
класса предшествует его использование, но это escamotage бы раздражать мой (мягкий) OCD путь слишком много для меня, чтобы соблюдать его.
Действительно ли нет способа, кроме инвертирования public:
и private:
?
Это убивает меня!
Почему я получил -1? Потому что я не дал легкий значок первым, кто ответил? Суровая аудитория, это место, предназначенное для помощи ... –
-2? Бедные дети, они не получат приз. –