Проблемы с указателями на функции 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++, но сейчас я застрял и был бы очень благодарен за некоторую помощь. Спасибо...

1 ответ

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

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

Удачи.

Другие вопросы по тегам