C : Показан встроенный метод проблема компиляции: ошибка: указатель на неполный тип класса недопустим

#c #compiler-errors

Вопрос:

Во время компиляции приведенный ниже код получил ошибку компиляции, так как

rise.h: ошибка: указатель на неполный тип класса недопустим (падение->значение = идентификатор)

Пока я добавлял определение функции в файл dot cpp, появилась ошибка связывания.

Примечание: Он отлично работает без встроенного.

Файл: fall.h

 #include<rise.h>
class Fall
{
    public:
    char value;
};
 

Файл: rise.h

 #include<fall.h>

class Fall;

class Rise
{
    public:
    Fall *fall;

    inline void fill_the_val(struct ring *buf, char flag=false, char id = 0)
    {
        if(true == flag)
        {
            fall->value = id; //this line got compilation issue
        }
    }
};
 

Файл: rise.cpp

 #include<fall.h>

#include<rise.h>
int main()
{
   fill_the_val(buf, true, 1);
}
 

Комментарии:

1. Похоже, это обычная круговая проблема с зависимостями. Самое простое решение-разделить объявление и определение fill_the_val .

2. @Someprogrammerdude : Да, я делал это раньше. Но получил ошибку связывания, если я разделил объявление и определение. Кроме того, если я удалил встроенный, он работает.

3. @Jarod42 Дайте больше информации, пожалуйста

4. @Jarod42: это в допустимой области.

5. Ошибки компоновщика (неопределенные ссылки или аналогичные) связаны с тем, что вы не строите со всеми исходными файлами в своем проекте.