【发布时间】:2022-12-01 02:54:35
【问题描述】:
我正在做一个项目,我需要参与函数指针,更具体地说是指向成员函数的函数指针。我已经阅读了几乎所有相关问题,但是没有一个描述我的具体问题。所以,我将尝试通过一个简单的例子来描述我的问题。
假设我有三个不同的头文件,它们具有不同的类,如下所示:
// foo1.h
struct Foo1{
int a1;
double b1;
void (Foo2::*fp)(const double);
}
// foo2.h
#include "foo1.h"
class Foo2{
public:
void print_foo2(const double p){
cout << "From Foo2: " << p << endl;
}
Foo1 foo1;
}
// foo3.h
class Foo3 : public Foo2{
Foo1 foo1;
foo1.fp = &Foo2::print_foo2; // cannot do that
}
所以,struct的成员变量之一Foo1是指向成员函数的函数指针富二代, 即打印_foo2.出于这个原因,我创建了对象实例foo1并为其分配一个指向打印_foo2.班级富3从类继承富二代.我注意到,正如我所想的那样,它可能是解决问题的有用信息。但是,我无法获得指向该函数的指针富二代在结构内部不被识别Foo1.甚至包括foo2.h在foo1.h没有帮助。如果我没记错的话,这是因为Foo1需要富二代在构造期间为其成员变量,但以相同的方式富二代需要Foo1待建。所以,这造成了一个僵局。 这是问题的原因吗?如果是,我该如何解决? 感谢您的时间。
【问题讨论】:
-
试试
Foo1 foo1{1, 3.141, &Foo2::print_foo2};而不是Foo1 foo1; foo1.fp = &Foo2::print_foo2;- 这是你想要的吗?
标签: c++ function-pointers pointer-to-member