Проблемы с указателями на функции C ++ / Arduino

у меня есть файл заголовка с классом и несколькими объявлениями и нестатическими функциями-членами, как это:

    //foo.h
...
#include <bar.h>

class foo
{
...
public:
void myFunction();
};

и заголовочный файл со структурой и классом вроде:

    //bar.h
...
struct baz
{
class foo;
...
void (foo::*functionPointer)() = NULL;
}

class bar
{
...
public:
static myOtherFunction();
};

и я хочу обратиться к указателю на функцию в статической функции bar.cpp «myOtherFunction», например:

    void bar::myOtherFunction()
{
...
baz b = baz();
b.functionPointer = &foo::myFunction;
}

но это приводит меня к ошибке компилятора:

    bar.cpp:247:22: error: cannot convert 'void (foo::*)()' to 'void baz::foo::*)()' in assignment
b.functionPointer = &foo*:myFunction;
Error compiling

Довольно уверен, что это очевидная ошибка для любого, кто имеет опыт работы с c / c ++, но сейчас я застрял и был бы очень благодарен за некоторую помощь. Спасибо…

0

Решение

Если у вас есть доступ к библиотекам / классам C ++ 11 в вашем компиляторе, включите functional библиотека. Описание Вот. Он покажет способ создания полностью «упакованных» объектов, имеющих ссылку как на нужный метод, так и на экземпляр класса.

Если нет, прочитайте Указатели на участников раздел C ++ FAQ очень ОЧЕНЬ тесно. Это поддерживается всем везде как основная часть языка.

Удачи.

0

Другие решения