【发布时间】:2020-11-23 18:30:27
【问题描述】:
class A{
static void callback(void(*fun)());
};
class B{
void f1();
}
int main{
B b;
A::callback(b.f1);
return 0'
}
如果 f1 是非静态成员函数,我将在编译时遇到以下错误
no known conversion for argument 1 from â <unresolved overloaded function type> â to â void (*)
如何在不将 f1 设为静态的情况下解决此问题
请帮帮我
【问题讨论】:
-
如果你展示几行代码来说明你的意思会更清楚。
-
感觉还有个问题……你为什么要关心那个地址?
-
如果不做出一些的妥协,就无法解决这个问题,因为你真正要求的东西是不可能的。哪种妥协适合您取决于具体情况。因此,如果您需要一些必须参与的帮助,请描述您实际想要实现的目标。
-
这能回答你的问题吗? Setting a pointer to a non-static member function。另请参阅 Obtaining a function pointer to a non static member function 了解使用 lambda 表达式和
std::function而不是函数指针的不太过时的解决方案。