у меня есть файл заголовка с классом и несколькими объявлениями и нестатическими функциями-членами, как это:
//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 ++, но сейчас я застрял и был бы очень благодарен за некоторую помощь. Спасибо…
Если у вас есть доступ к библиотекам / классам C ++ 11 в вашем компиляторе, включите functional
библиотека. Описание Вот. Он покажет способ создания полностью «упакованных» объектов, имеющих ссылку как на нужный метод, так и на экземпляр класса.
Если нет, прочитайте Указатели на участников раздел C ++ FAQ очень ОЧЕНЬ тесно. Это поддерживается всем везде как основная часть языка.
Удачи.