Arduino C ++ вопросы, касающиеся имени класса

Я работаю над подключением своих лампочек Philips оттенка к Arduino и нашел некоторые ресурсы в Интернете.
У одного из ресурсов есть файл, который продолжает выдавать ошибку, и когда я смотрел на него, я никогда не видел, чтобы этот синтаксис использовался ранее.
Может кто-нибудь мне помочь?

#ifndef SERIALHUE_H
#define SERIALHUE_H
#include <Arduino.h>
#include <Stream.h>
#include <ArduinoHue.h>class SerialHue: public ArduinoHue{
public:
SerialHue(char* ipAddress, Stream* serial);
boolean connect(char* deviceId, char* username);
protected:
char* _ipAddress;
char* _deviceId;
char* _username;
boolean makePost(char* request, char* data);
boolean waitForResponse();
Stream* _serial;
};

#endif

Ошибка в этой строке:

*класс SerialHue: публичный ArduinoHue {*

Давать ошибку:

SerialHue.h: 10: ошибка: ожидаемое имя класса перед маркером ‘{‘

Что это за формат и что здесь не так?

0

Решение

проверьте настройки компилятора … возможно, он попытается скомпилировать код на c ++ с помощью компилятора c

о формате:

class X : public Y {
}

это синтаксис расширения класса в C ++

плюс: убедитесь, что ArduinoHue.h действительно определяет класс ArduinoHue

…если вы не можете понять это: взгляните на предварительно скомпилированный исходный файл (g ++ -E)

1

Другие решения

Во-первых, убедитесь, что вы не включаете файл рекурсивно, например, #include файл, который включает в себя #include другие файлы, которые вы также включили #include.

Кроме того, декларации Forward вместо #include ArduinoHue.h могут решить вашу проблему. такие как:

class ArduinoHue;

Я нашел похожие вопросы, они могут помочь вам:
ожидаемое имя класса до ‘{‘ токена

ошибка: ожидаемое имя класса до токена ‘{’

0