gpt4 book ai didi

c++ - 指向类成员的函数指针

转载 作者:太空宇宙 更新时间:2023-11-04 11:53:48 29 4
gpt4 key购买 nike

我正在尝试做这样的事情:

class A {
void *(*func)(void *);

A(void *(*function)(void *)){
func = function;
}
}

class B {
void *real_func(void *);
A ptr;
B()
:ptr(&real_func)
{
...
}
}

但是我得到这个错误:

error: ISO C++ forbids taking the address of an unqualified or parenthesized non-static member function to form a pointer to member function.

有人知道如何将函数指针初始化为同一个类中的函数成员吗???

谢谢!

卡洛斯

最佳答案

因为real_func不是静态成员函数,所以它的类型不能是void *(*)()。相反,它是 void *(B::*)() 因此您需要相应地声明 func:

void *(B::*func)();

// call it like this
pointer_to_b->*func();

如果你细心的话,你也可以使用指向A的指针作为基类,但是你必须确保指向A的指针指向B的一个实例:

void *(A::*func)();

然而,在这一点上,您主要只是在复制虚拟成员函数的功能。所以我建议您改用它:

class A {
virtual void *func() = 0;
};

class B {
void *func() {
// ...
}
};

关于c++ - 指向类成员的函数指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17035902/

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