假设我有一个类和一个函数
class A
{
int a;
int b;
int mul()
{
return a+b;
}
};
...
void func(int af, int bf, int (*fc)())
{
...
}
在主函数中,该函数应该使用A类的方法
int main
{
A as;
...
func(as.a, as.b, as.mul);
}
但是,我不能那样做,编译器一直告诉我我正在通过
(int&, int&, 'unresolved overloaded function type')
成为候选函数
(int, int, void(*)()).
为什么会这样,以及如何将类的方法传递给另一个函数?
哦,我想我应该把问题说清楚一点。func(...)
实际上是我正在研究的算法中的一个函数。并且class A
是一个将使用该算法进行模拟的模型。所以我认为我不会在函数 B 中专门使用 A 的实例,而只是将 A 的方法和组件传入并使用它们。
更新:有些人提到在 A 类中使用静态方法。但是,这仍然是部分解决方案。使用静态方法mul()
将迫使我声称 a 和 b 都是静态的。如果我必须使用 A 的多个实例,并且在我的主函数中的每个实例中使用不同的方法 a、b,那么使用静态变量将完全失败。
那么,关于如何在不使用静态变量/方法的情况下解决此问题还有其他建议吗?我记得在诸如 python 之类的脚本语言中,传递任何类型的方法基本上都不是问题。为什么我不能在 C++ 中做类似的事情?或者 C++ 中是否有解决方法可以帮助我做到这一点?