不知道为什么我收到"错误:转发声明<class>"

Don't know why I receive `error: forward declaration of <class>`

本文关键字:声明 gt class lt 转发 为什么 错误 不知道      更新时间:2023-10-16

我有这个代码:

class AP_InertialSensor_Backend;
class AP_InertialSensor
{
public:
    const Vector3f  &get_gyro(uint8_t i) const { return drivers[primary_instance]->_gyro[i]; }
private:
    AP_InertialSensor_Backend *drivers[INS_MAX_INSTANCES];
    void detect_instance(uint8_t instance);    
    /// primary IMU instance
    uint8_t primary_instance=0;
};
#include <AP_InertialSensor_Backend.h>

无论如何,我收到这些错误:

In member function 'const Vector3f& AP_InertialSensor::get_gyro(uint8_t) const':
error: invalid use of incomplete type 'class AP_InertialSensor_Backend'
error: forward declaration of 'class AP_InertialSensor_Backend'

我还有其他同样的项目,当时也成功了,但我不知道是什么失败了。

我愿意接受任何帮助。

提前谢谢。

在定义类之前,您正在访问AP_InertialSensor_Backend的成员_gyro

要修复此问题,请将get_gyro的实现移动到cpp文件中。

您会出现此错误,因为在使用AP_InertialSensor_Backend之前,您没有包含它的头文件。您确实包含了一个前向引用,但唯一允许您做的就是声明一个指向该类的指针。