我做了一個名爲WebServer_My2.h
的工作類WebServer_My2KNJ.h
的派生類(關於這些文件的細節,請參閱下面的註釋部分),並且我得到了以下內容錯誤時,我試圖編譯示例程序:Web_HelloWorld.ino
:無法獲得派生的WebDuino類 - 編譯錯誤'Web_HelloWorld.ino'
編譯錯誤消息:(或看到附加文件「ErrorMsg.txt」):
Web_HelloWorld.ino: In function 'void setup()': Web_HelloWorld:57: error: invalid conversion from 'void (*)(WebServer_My2KNJ&, WebServer_My2::ConnectionType, char*, bool)' to 'void (*)(WebServer_My2&, WebServer_My2::ConnectionType, char*, bool)' Web_HelloWorld:57: error: initializing argument 1 of 'void WebServer_My2::setDefaultCommand(void (*)(WebServer_My2&, WebServer_My2::ConnectionType, char*, bool))' Web_HelloWorld:61: error: invalid conversion from 'void (*)(WebServer_My2KNJ&, WebServer_My2::ConnectionType, char*, bool)' to 'void (*)(WebServer_My2&, WebServer_My2::ConnectionType, char*, bool)' Web_HelloWorld:61: error: initializing argument 2 of 'void WebServer_My2::addCommand(const char*, void (*)(WebServer_My2&, WebServer_My2::ConnectionType, char*, bool))'
文件Web_HelloWorld.ino
中的線webserver.setDefaultCommand(&helloCmd);
在被加亮時間。
我的派生類:
/*
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
注:
- 我是一個新手,C++,所以大家多多包涵。
- 除'WebServer_My2KNJ.h'外的所有文件基本上都是'https://github.com/sirleech/Webduino'。
- 'Web_HelloWorld.ino'編譯並運行正常,如果我使用'WebServer_My2.h'而不是'WebServer_My2KNJ.h'。
- 在父類「WebServer_My2.h」中,我所做的只是通過將'private:'更改爲'protected:'和類名來修改'WebServer.h'。
- 我之所以會遇到這個麻煩,是因爲我想稍後爲這個類添加更多的功能。因此,爲了讓事情變得更清潔和簡單,我最好將我的代碼放在派生類中。
你是否改變了'helloCmd()'參數? –
不,我沒有對'helloCmd()'函數做任何修改。正如我前面所說,如果我#include'WebServer_My2.h'而不是'WebServer_My2KNJ.h',Arduino應用程序'Web_HelloWorld.ino'編譯並正常工作。這個應用程序的非修改版本'Web_HelloWorld.ino'可以通過上面給出的鏈接('https://github.com/sirleech/Webduino')查看。 – user2894689
問題是傳遞給'setDefaultCommand()'的'helloCmd'與期望的不太匹配。如果你沒有修改它,那麼肯定還有其他的東西會影響它的參數,例如typedef某處。 WebServer_My2.h來自哪裏?它和WebServer.h完全一樣嗎? –