【发布时间】:2012-09-25 07:16:08
【问题描述】:
我想解决这个关于类成员函数回调的问题。 想象一下,您有一个来自外部库的函数(无法修改!),如下所示:
void fortranFunction(int n, void udf(double*) );
我想在现有类的函数成员之上作为 udf 函数传递。请看以下代码:
// External function (tipically from a fortran library)
void fortranFunction(int n, void udf(double*) )
{
// do something
}
// User Defined Function (UDF)
void myUDF(double* a)
{
// do something
}
// Class containing the User Defined Function (UDF)
class myClass
{
public:
void classUDF(double* a)
{
// do something...
};
};
int main()
{
int n=1;
// The UDF to be supplied is myUDF
fortranFunction(n, myUDF);
// The UDF is the classUDF member function of a myClass object
myClass myClassObj;
fortranFunction(n, myClassObj.classUDF); // ERROR!!
}
上面代码的最后一行导致编译错误,因为你不能将classUDF成员函数声明为静态函数。 你知道是否有可能解决这个问题? 可能 Boost 库可以帮助我,但我不知道如何(请考虑 fortranFunction 无法修改,因为它来自外部库)。 非常感谢! 阿尔贝托
【问题讨论】:
标签: boost callback function-pointers static-members