在向量中存储类方法并调用它

时间:2017-05-09 02:43:14

标签: c++ vector arduino

我正在尝试创建一个简单的调度程序,类可以用来在以后存储和调用任务。 addItem()函数存储传递给它的函数和未来时间,refresh()(每个循环运行)检查是否有时间运行存储的方法。

由于以下错误,我在同时存储不同类的方法时遇到了问题:

cannot convert 'void (foo::bar::*)()' to 'void (*)()'

并且在我开始工作时调用函数也遇到了麻烦。

这是我的代码:

#include <Arduino.h>
#include <vector>
namespace Scheduler {
    struct s_singular {
        void (*function)();
        uint32_t timeDelay;
    };

    std::vector<s_singular> _scheduleVec;

    void addItem(void (*func)(), uint32_t timeDelay) {
        _scheduleVec.push_back({func, millis() + timeDelay});
    }

    void refresh() {
        for (auto i = _scheduleVec.begin(); i != _scheduleVec.end(); i++) {
            auto item = (*i);
            if (item.timeDelay >= millis()) {
                (*item.function)();
            }
        }
    }
};

如果你想知道我如何在Arduino中使用矢量,我正在使用ArduinoSTL库。

0 个答案:

没有答案