函数指针我基本上试图分配一个函数指针到我创建的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'指针。虽然这个隐藏的第一个参数对你来说是隐藏的,但它仍然是成员函数签名的一部分。 –