Доброго времени суток, тостеровчане.
У меня есть два заголовочных файла с исходным кодом:
report.h#ifndef __REPORT_H
#define __REPORT_H
namespace HidDevice {
class Device;
class Report {
// реализация родительского класса
};
struct SetModeReport : public Report {
public:
SendModeReport() :
Report(M_REPORT, M_REPORT_LEN),
mode(Device::Mode::UNDEFENDED)
{ };
~SendModeReport() { };
Device::Mode mode;
// остальные методы и поля
private:
// приватная область
};
}; // HidDevice namespace
#endif //__REPORT_H
hidDevice.h#ifndef __HID_H
#define __HID_H
#include "report.h"
namespace HidDevice {
class Device
{
public:
//! List of HID device states
enum Mode {
NORMAL = 0, /*!< Mode of sending angles */
CALIB_WHEEL, /*!< Calibration wheel mode */
CALIB_RUDDER, /*!< Calibration rudder mode */
SAVE_TABLE_WHEEL, /*!< Save wheel calibration into flash memory */
SAVE_TABLE_RUDDER, /*!< Save rudder calibration into flash memory */
END_SAVE_TABLE, /*!< End of table saving */
CALC_CRC, /*!< Calculate CRC of both tables */
END_CALC_CRC, /*!< End of calculating CRC */
UNDEFENDED /*!< "Do nothing" mode */
};
void sendData(Report& report);
// другие поля и методы
};
}; // HidDevice namespace
#endif //__HID_H
Собственно после попытки компиляции компилятор ругается следующим образом:
inc\hid\report.h|97|error: 'Mode' in 'class HidDevice::Device' does not name a type|
Хотя, вроде как, для предотвращения именно этой ошибки я использовал forward declaration в файле
report.h:
namespace HidDevice {
class Device;
....
}; // HidDevice namespace
Что я делаю не так?