首页 > 解决方案 > 当需要指向函数的指针时如何将指针传递给函数成员

问题描述

我在这个论坛上尝试过使用一些解决方案,但坦率地说,它们都令人困惑,我不明白如何将它们应用到我的代码中。所以我有:

class A { public: ... 
A(args..., void (*myCallback)())
};

它适用于普通功能,但是当我尝试这个时

class B { public: void member(){}};
B temp;
A myobj(args..., temp.member);

它不起作用。据我所知,这是因为指向成员函数的指针隐藏了这个参数,所以 arg 列表不匹配。出于设计原因,我不能将 A 类设为静态。为我可能传入的每个类创建额外的构造函数是我的临时解决方案,但我对项目中的每个类都使用构造函数。有没有通用的解决方案?我已经读过 std::bind 或模板是要走的路,但我不熟悉它们。特别是绑定非常令人困惑,因为阅读它的资源很差,所以我在考虑类似的东西

template<typename> var;
class A { ... 
    A(args..., void (*myCallback)(var))
    };

但是,这不是您使用模板的方式,因为编译器会在这方面给我错误。

标签: c++functionpointerscallbackmember

解决方案


推荐阅读