У меня есть два класса, и оба они используют другой класс, например:
// class1.h
class Class1;
#include "class2.h"
class Class1 {
public:
static Class2 *C2;
...
};
// class2.h
class Class2;
#include "class1.h"
class Class2 {
public:
static Class1 *C1;
...
};
И когда я определяю его, как в примере выше, он работает (у меня также есть #ifndef
, чтобы избежать бесконечного повторения заголовка). Но я также хочу добавить в свои классы несколько встроенных функций. И я прочитал здесь, что мне следует указать определение встроенной функции в файле заголовка, потому что это не сработает, если я помещу их в файл cpp и захочу вызвать их из другого файла cpp (когда я это сделаю, я получаю неопределенную ссылку во время связывания). Но проблема здесь примерно в следующем:
// class1.h
...
inline void Class1::Foo() {
C2->Bar();
}
Я получаю сообщение об ошибке: недопустимое использование неполного типа «struct Class2».
Так как я могу это сделать?