gpt4 book ai didi

c++ - 无法转换为类型的函数指针

转载 作者:行者123 更新时间:2023-11-28 02:28:32 26 4
gpt4 key购买 nike

我基本上是在尝试将函数指针分配给我创建的 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;

最佳答案

如消息所述,您正在尝试将成员函数的地址分配给常规函数指针,而不是成员函数指针。

获取静态或非成员函数的地址;或将类型更改为成员函数指针

typedef bool (FuncPtrTest::*CanMove) (position old_pos, position new_pos);

在后一种情况下,您需要一个对象来调用它,例如

(this->*a)(old_pos, new_pos);

关于c++ - 无法转换为类型的函数指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29717161/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com