Предположим, ваш класс MyNode
, ваша функция MyFunc(MyNode)
, заголовочный файл foo.h
и исходный файл bar.cpp
.(Это одна из причин, по которой вы должны приводить примеры в своих вопросах; если вы этого не сделаете, тогда другие люди будут называть ваши вещи.)
Естественно bar.cpp
содержит следующую строку:
#include "foo.h"
Когда компилятор пытается скомпилировать bar.cpp
, он встречает объявление MyFunc(MyNode X)
и жалуется «Что за хрень MyNode
? Я ухожу!»
Самый простойЧтобы решить эту проблему, поместите определение MyNode
в foo.h
выше объявления функции, которая его использует.
Лучший способ - вставить строку в foo.c
:
class MyNode;
выше любого другого упоминания MyNode
.(Это говорит компилятору «есть класс с именем MyNode
, не волнуйтесь, что это такое, он будет предоставлен позже.) И каким-то образом (например, с помощью оператора #include
) поместите определение MyNode
выше любогокод, который фактически использует его.