Я создал производный класс с именем WebServer_My2KNJ.h
из рабочего класса с именем WebServer_My2.h
(подробности об этих файлах см. в разделе «Примечания» ниже) и получил следующую ошибку при попытке скомпилировать пример программы: 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))'
Строка 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. а>'.
- «Web_HelloWorld.ino» компилируется и работает нормально, если я использую «WebServer_My2.h» вместо «WebServer_My2KNJ.h».
- В родительском классе «WebServer_My2.h» все, что я сделал, это модифицировал «WebServer.h», изменив «private:» на «protected:» и имя класса.
- Причина, по которой я иду на эту проблему, заключается в том, что я хочу позже добавить больше функциональности в этот класс. Следовательно, чтобы все было чище и проще, лучше всего иметь свой код в производном классе.