【问题标题】:How to get a function pointer to a member function如何获取指向成员函数的函数指针
【发布时间】: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.hfoo1.h没有帮助。如果我没记错的话,这是因为Foo1需要富二代在构造期间为其成员变量,但以相同的方式富二代需要Foo1待建。所以,这造成了一个僵局。 这是问题的原因吗?如果是,我该如何解决? 感谢您的时间。

【问题讨论】:

  • 试试 Foo1 foo1{1, 3.141, &amp;Foo2::print_foo2}; 而不是 Foo1 foo1; foo1.fp = &amp;Foo2::print_foo2; - 这是你想要的吗?

标签: c++ function-pointers pointer-to-member


【解决方案1】:

Foo1Foo3 都需要Foo2 类。所以他们的头文件应该包含foo2.h

但是Foo2既不需要Foo1也不需要Foo3,所以它的头文件应该不是包括foo1.hfoo3.h

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-12-11
    • 1970-01-01
    • 2012-02-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多