我在这个论坛上尝试过使用一些解决方案,但坦率地说,它们都令人困惑,我不明白如何将它们应用到我的代码中。 所以我有:
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))
};
但是,不是你使用模板的方式,因为编译器会给我带来错误。