不知道为什么我收到`错误:<class>`</class>的前向声明

时间:2014-09-15 11:16:03

标签: c++

我有这段代码:

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'

我有其他相同的项目,然后它工作,但我不知道什么是失败。

我会帮助你。

提前致谢。

2 个答案:

答案 0 :(得分:3)

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

要解决此问题,请将get_gyro的实现移至cpp文件。

答案 1 :(得分:0)

您收到此错误是因为在使用AP_InertialSensor_Backend之前未添加{{1}}的头文件。你确实包含了一个前向引用,但唯一允许你做的是声明一个指向该类的指针。