Hi Everyone!
Please help me fix .
Thanks.
Global.h
#ifndef Global_h
#define Global_h
#include <Arduino.h>
class BaseClass;
typedef struct TaskInfo {
uint8_t Id;
void (BaseClass::*cb_event)(TaskInfo* ti);
};
#endif
MyScheduler.h
#ifndef MyScheduler_h
#define MyScheduler_h
#include "Global.h"
class MyScheduler
{
public:
MyScheduler();
void performCheck();
void addTask(uint8_t, void (BaseClass::*cb_event)(TaskInfo* ti));
TaskInfo* currentTask;
};
extern MyScheduler scheduler;
#endif
MyScheduler.cpp
#include "MyScheduler.h"
MyScheduler::MyScheduler(){}
void MyScheduler::performCheck(){
currentTask->cb_event(currentTask);
}
void MyScheduler::addTask(uint8_t id, void (BaseClass::*cb_event)(TaskInfo* ti)){
currentTask->id = id;
currentTask->cb_event = cb_event;
}
MyScheduler scheduler;
Base.h
#ifndef BaseClass_h
#define BaseClass_h
#include "Global.h"
#include "MyScheduler.h"
class BaseClass{
public:
BaseClass();
virtual void doWork(TaskInfo*) = 0;
};
#endif
Base.cpp
#include "BaseClass.h"
BaseClass::BaseClass(){}
Derived.h
#ifndef Derived_h
#define Derived_h
#include "BaseClass.h"
class Derived : public BaseClass{
public:
Derived();
void set(uint8_t);
virtual void doWork(TaskInfo*);
};
#endif
Derived.cpp
#include "Derived.h"
Derived::Derived():BaseClass(){}
void Derived::doWork(TaskInfo* t){
}
void Derived::set(uint8_t id){
scheduler.addTask(id, doWork);
}
Error here:
scheduler.addTask(id, doWork);
no known conversion for argument 2 from
'' to 'void (BaseClass::)(TaskInfo)'
Error compiling.