我创建了一个名为WebServer_My2KNJ.h
工作类的派生类WebServer_My2.h
(有关这些文件的详细信息,请参见下面的注释部分),当我尝试编译示例程序时出现以下错误Web_HelloWorld.ino
::
编译错误信息:(或查看附件'ErrorMsg.txt'):
Web_HelloWorld.ino:在函数“无效设置()”中: Web_HelloWorld:57:错误:从 'void (*)(WebServer_My2KNJ&, WebServer_My2::ConnectionType, char*, bool)' 到 'void (*)(WebServer_My2&, WebServer_My2::ConnectionType, char*, bool)' 的无效转换 Web_HelloWorld:57: 错误: 初始化参数 1'void WebServer_My2::setDefaultCommand(void (*)(WebServer_My2&, WebServer_My2::ConnectionType, char*, bool))' 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
笔记:
- 我是 C++ 的新手,所以请耐心等待。
- 除了“WebServer_My2KNJ.h”之外,所有使用的文件都与“ https://github.com/sirleech/Webduino ”中的基本相同。
- 如果我使用“WebServer_My2.h”而不是“WebServer_My2KNJ.h”,“Web_HelloWorld.ino”编译并运行良好。
- 在父类“WebServer_My2.h”中,我所做的只是通过将“private:”更改为“protected:”和类名来修改“WebServer.h”。
- 我遇到这个麻烦的原因是我想稍后为这个类添加更多功能。因此,为了使事情更简洁,最好将我的代码放在派生类中。