<分区>
我正试图谦虚地移植 Jason Coon 的“FastLED + ESP8266 Web 服务器”:https://github.com/jasoncoon/esp8266-fastled-webserver到 ESPAsyncWebServer,还有一些额外的东西......
我的项目位于此处https://github.com/kelexel/esp8266-fastled-async-webserver-2.0/
我在这个项目上的主要工作是将所有内容包装到漂亮的类中,并尝试提供某种模块化。
编辑:正如许多人在下面的评论中指出的那样,我试图完成的事情显然被错误地说明了。我所寻找的只是关于应该做什么的想法、代码示例、文档、引用资料,这样我就可以学习和改进...
我是 C++ 的新手,所以请放纵一下..
我想要完成的是获得我这个新手只能解释为对象集合的东西,每个对象都有一个字符串名称 和方法模式。所述pattern应该是ESPLedDriver.cpp类的一个方法
问题在于,在 ESPLedDriver.h 和 ESPLedDriver.cpp 中,我尝试创建一个引用 ESPLedDriver::的结构
我做了一段代码来说明这个问题:
ESPLedDriver.cpp
void ESPLedDriver::colorwaves()
{
// ...
}
void ESPLedDriver::palettetest()
{
// ...
}
void ESPLedDriver::setPatterns()
{
// const uint8_t patternCount;
_patterns = {
// ERROR: src/ESPLedDriver.cpp:225:3: error: cannot convert 'ESPLedDriver::colorwaves' from type 'void (ESPLedDriver::)()' to type 'ESPLedDriver::Pattern {aka void (*)()}'
{ colorwaves, "Color Waves" },
// ERROR: src/ESPLedDriver.cpp:225:3: error: cannot convert 'ESPLedDriver::palettetest' from type 'void (ESPLedDriver::)()' to type 'ESPLedDriver::Pattern {aka void (*)()}'
{ this->palettetest, "Palette Test" },
};
}
ESPLedDriver.h
#include "FastLED.h"
class ESPLedDriver
{
public:
ESPLedDriver();
// ...
private:
void setPatterns();
typedef void (*Pattern)();
typedef Pattern PatternList[];
typedef struct {
Pattern pattern;
String name;
} PatternAndName;
typedef PatternAndName PatternAndNameList[];
/* Patterns */
void colorwaves();
void palettetest();
PatternAndNameList _patterns;
uint8_t _patternCount;
}
(或者,如果您愿意,作为要点: https://gist.github.com/kelexel/ab5687cf83e376c709e49fbfbcfc100b )