Iの前に必要なクラス名スケッチをコンパイルしようとすると、次のエラーが発生します:

Sketch.ino:24:0からインクルードされたファイル:SerialRenderer.h:7:エラー:「{」トークンの前にクラス名が必要です

SerialRenderer.h

#ifndef SERIALRENDERER_H_ #define SERIALRENDERER_H_ #include <MenuSystem.h> class SerialRenderer : public MenuComponentRenderer { public: SerialRenderer(); virtual ~SerialRenderer(); public: // methods from MenuComponentRenderer virtual void render(Menu const& menu) const; virtual void render_menu_item(MenuItem const& menu_item) const; virtual void render_back_menu_item(BackMenuItem const& menu_item) const; virtual void render_numeric_menu_item(NumericMenuItem const& menu_item) const; virtual void render_menu(Menu const& menu) const; }; #endif // SERIALRENDERER_H_ 

MenuSystem.hの内容は、

SerialRenderer.hがメインスケッチファイルからインクルードされている場合、MenuSystem.hのインクルードは発生しないようです。 SerialRenderer.hのインクルードを削除すると、同じエラーが発生します。

コンパイラがMenuSystem.hを「見る」ことができるようにするために、私が見逃している単純なものはありますか?

編集:

インストールしたものよりも新しいバージョンのarduino-menusystemライブラリ(バージョン2.1.1)を探していたことがわかりました。そのバージョンにはMenuComponentRendererというクラスがありませんでした。

https://github.com/jonblack/arduino-menusystem/tree/master 正常にコンパイルされます。

回答

これは、MenuSystemライブラリの正しいバージョンが正しくないことが原因である可能性があります。正しくインストールされています。ライブラリをスケッチに追加できるかどうかを確認します。

編集:バージョンも追加する必要があることを追加しました正解

コメント

  • スケッチ>ライブラリを含めることでライブラリをスケッチに含めることができます。また、Library Managerは、バージョン2.1.1がインストールされていることを示しています。
  • インクルードをスケッチに追加するためのメンバー。ビルドは、必要なパスを追加するために含まれているスケッチを調べます。
  • @MikaelPatel私のメインスケッチにはSerialRenderer.hとMenuSystem.hの両方が含まれていますが、MenuSystem.hが含まれています。
  • 確かにバージョンも重要です。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です