Я в основном пытаюсь назначить указатель функции экземпляру созданного typedef. У меня есть кое-что, что можно сделать по этому вопросу, но я не могу понять это.Невозможно преобразовать в указатель функции типа
Заголовок:
#ifndef FUNCPTRTEST_H
#define FUNCPTRTEST_H
class FuncPtrTest
{
public:
struct position {
int x;
int y;
} ;
typedef bool (*CanMove) (position old_pos, position new_pos);
private:
FuncPtrTest();
bool FuncExample(position old_pos, position new_pos);
};
#endif // FUNCPTRTEST_H
Источник:
#include "funcptrtest.h"
FuncPtrTest::FuncPtrTest()
{
CanMove a = &FuncPtrTest::FuncExample;
}
bool FuncPtrTest::FuncExample(position old_pos, position new_pos)
{
return true;
}
ошибка:
cannot convert 'bool (FuncPtrTest::*)(FuncPtrTest::position, FuncPtrTest::position)' to 'FuncPtrTest::CanMove {aka bool (*)(FuncPtrTest::position, FuncPtrTest::position)}' in initialization
CanMove a = &FuncPtrTest::CanMove;
Вы объявляете простой указатель на функцию и пытается для назначения ему указателя функции-члена. –
Указатель функции, не являющийся членом, не совпадает с указателем функции-члена. Причина в том, что функции-члены нуждаются в скрытом первом аргументе, который становится указателем 'this' внутри функции-члена. Хотя этот скрытый первый аргумент скрыт от вас, он по-прежнему в некотором роде является частью сигнатуры функции-члена. –