gpt4 book ai didi

C++ : unresolved overloaded function when using function pointers

转载 作者:行者123 更新时间:2023-11-30 04:28:04 24 4
gpt4 key购买 nike

#include <iostream>
using namespace std;

class B
{
public:
int getMsg(int i)
{
return i + 1;
}
};

class A
{
B b;
public:
void run()
{
taunt(b.getMsg);
}

void taunt(int (*msg)(int))
{
cout << (*msg)(1) << endl;
}
};

int main()
{
A a;
a.run();
}

上面的代码在A类中有一个B类,A类有一个方法taunt,它接受一个函数作为参数。类 B 的 getMsg 被传递到 mock 中...上面的代码生成了以下错误消息:“错误:没有匹配函数来调用 'A::taunt()'”

是什么导致了上面代码中的错误消息?我错过了什么吗?

更新:

#include <iostream>
using namespace std;

class B
{
public:
int getMsg(int i)
{
return i + 1;
}
};

class A
{
B b;
public:
void run()
{
taunt(b.getMsg);
}

void taunt(int (B::*msg)(int))
{
cout << (*msg)(1) << endl;
}
};

int main()
{
A a;
a.run();
}

t.cpp: 在成员函数 'void A::run()' 中:第 19 行:错误:没有匹配函数来调用“A::taunt()”编译因 -Wfatal-errors 而终止。

将 (*msg)(int) 更改为 (B::*msg)(int) 后,我仍然遇到相同的错误

最佳答案

b.getMsg 不是形成指向成员的指针的正确方法,您需要 &B::getMsg

(*msg)(1) 不是通过指向成员的指针调用函数的正确方法,您需要指定一个对象来调用该函数,例如(使用临时)(B().*msg)(1).

关于C++ : unresolved overloaded function when using function pointers,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10454659/

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