Проблемы с указателями на функции 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++ ОЧЕНЬ внимательно. Это поддерживается всем и везде как основная часть языка.
Удачи.