gpt4 book ai didi

c++ - 误解函数指针——将其作为参数传递

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:21:19 26 4
gpt4 key购买 nike

我想通过函数指针作为参数将类 A 的成员函数传递给类 B。请告知这条路是否通向某处,并帮助我填补坑洞。

#include <iostream>


using namespace std;

class A{
public:

int dosomeA(int x){
cout<< "doing some A to "<<x <<endl;
return(0);
}
};

class B{
public:

B(int (*ptr)(int)){ptr(0);};
};

int main()
{
A a;
int (*APtr)(int)=&A::dosomeA;

B b(APtr);
return 0;
}

这段精彩的代码给我留下了编译器错误:

cannot convert int (A::*)(int)' toint (*)(int)' in initialization

首先我想让它编译。<​​br/>其次,我不希望 dosomeA 是静态的。

最佳答案

指向成员的指针不同于普通的函数指针。由于编译器错误表明 &A::dosomeA 的类型实际上是 int (A::*)(int) 而不是 int (*)(int)

B 的构造函数中,您需要 A 的实例来调用使用 .* 的成员->* 运算符。

例如'

B(int(A::*ptr)(int))
{
A atmp;
(atmp.*ptr)(int);
}

关于c++ - 误解函数指针——将其作为参数传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2475870/

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