Скорее всего, проблема круговая включает.У вас, вероятно, есть Node.h
, включая LinkedList.h
и наоборот.Это приводит к (по существу) парадоксу: если оба определения классов требуют другого, какой из этих двух определен первым в любой заданной единице компиляции?
На практике вы включаете Node.h
, который затем пытается включитьLinkedList.h
еще раз (обратите внимание, что #include
буквально означает "скопировать и вставить этот файл сюда" в компилятор), но на этом этапе LinkedList_H
уже определено (потому что это то, откуда вы пришли), и включение не имеет никакого эффекта.Так что теперь вы находитесь в середине Node.h
, но без предварительного определения LinkedList
и получаете «не объявленные» ошибки.
Решение состоит в том, чтобы удалить #include Node.h
в LinkedList.h
и заменить егос предварительным объявлением, поскольку определение LinkedList
в заголовке не должно знать ничего больше, чем «класс Node
существует» (поскольку он использует только указатели).