Предлагаемое решение:
Вам необходимо включить заголовочный файл, который определяет класс IntList
, в ваш файл cpp IntListProxy.cpp
.
Объяснение:
Когда вместо включения заголовочного файла вы добавляете строку:
class IntList;
В программе Forward объявляется класс IntList
, что означает для компилятора, что это Неполный тип .С незавершенными типами, Нельзя создавать объекты этого или делать что-либо, что требует компилятору знать расположение IntList
или больше, чем тот факт, что IntList
является просто типом.То есть: компилятор не знает, каковы его члены и какова его структура памяти.Но поскольку указатели на все объекты требуют одинакового распределения памяти, вы можете использовать прямое объявление, когда просто ссылаетесь на незавершенный тип в качестве указателя.
В этом случае ваш файл cpp IntListProxy.cpp
должен знать макет(члены) IntList
, чтобы иметь возможность разыменовать его и, следовательно, ошибку.