0

WebServer_My2KNJ.hと呼ばれる作業クラスの派生クラスを作成しWebServer_My2.h(これらのファイルの詳細については、以下の「注」セクションを参照)、サンプル プログラムをコンパイルしようとすると、次のエラーが発生しました: Web_HelloWorld.ino:

コンパイル エラー メッセージ: (または添付ファイル 'ErrorMsg.txt' を参照):

Web_HelloWorld.ino: 関数 'void setup()' 内:
Web_HelloWorld:57: エラー: 'void (*)(WebServer_My2KNJ&, WebServer_My2::ConnectionType, char*, bool)' から 'void (*)(WebServer_My2&, WebServer_My2::ConnectionType, char*, bool)' への無効な変換
Web_HelloWorld:57: エラー: 'void WebServer_My2::setDefaultCommand(void (*)(WebServer_My2&, WebServer_My2::ConnectionType, char*, bool))' の引数 1 を初期化しています
Web_HelloWorld:61: エラー: 'void (*)(WebServer_My2KNJ&, WebServer_My2::ConnectionType, char*, bool)' から 'void (*)(WebServer_My2&, WebServer_My2::ConnectionType, char*, bool)' への無効な変換
Web_HelloWorld:61: エラー: 'void WebServer_My2::addCommand(const char*, void (*)(WebServer_My2&, WebServer_My2::ConnectionType, char*, bool))' の引数 2 を初期化しています

webserver.setDefaultCommand(&helloCmd);その時点で、ファイル内の行Web_HelloWorld.inoが強調表示されます。

私の派生クラス:

/*
  WebServer_My2KNJ.cpp - Extension of the library class 'WebServer_My2'
  Created by: COG008
  Date Created: 2013/10/17
*/

#ifndef WebServer_My2KNJ_h
#define WebServer_My2KNJ_h

#include <..\Webduino_My2\WebServer_My2.h>

class WebServer_My2KNJ: public WebServer_My2
{
public:

// constructor for webserver object
WebServer_My2KNJ(const char *p_urlPrefix = "", int p_port = 80); 
};
WebServer_My2KNJ::WebServer_My2KNJ(const char *p_urlPrefix, int p_port) : 
WebServer_My2::WebServer_My2(p_urlPrefix, p_port)
{
;
}

#endif

ノート:

  1. 私は C++ の初心者なので、ご容赦ください。
  2. 「WebServer_My2KNJ.h」を除いて使用されるすべてのファイルは、「https://github.com/sirleech/Webduino」にあるものと基本的に同じです。
  3. 「WebServer_My2KNJ.h」の代わりに「WebServer_My2.h」を使用すると、「Web_HelloWorld.ino」は正常にコンパイルおよび実行されます。
  4. 親クラス 'WebServer_My2.h' では、'private:' を 'protected:' に変更して 'WebServer.h' を変更し、クラス名を変更するだけでした。
  5. この問題に直面する理由は、後でこのクラスに機能を追加したいからです。したがって、物事をよりクリーンでシンプルに保つために、コードを派生クラスに含めるのが最善です。
4

1 に答える 1