السلام عليكم ،
المشكلة جننتني .. ولو لم أكن بخيلاً لمنحتها أكثر من عشرة نقاط :/ ،
لدي مكتبة تملك دالة تتطلب مؤشر لدالة أخرى ، يعني على شكل Callback ، وهذا مثال :
//// FROM THE HEADER FILE OF XYZ LIB
typedef void (* FUNC)(int,int);
void setCallbackFunction(FUNC f){
f(10,20);
}
///////////////////////////////////
void myCallback(int x,int y)
{
printf("%d %d",x,y);
}
void start()
{
setCallbackFunction(myCallback);
}
int main()
{
start();
return 0;
}أريد تغليف start و myCallback في " Class " ، كتبت شيء كهذا :
//// FROM THE HEADER FILE OF XYZ LIB
typedef void (* FUNC)(int,int);
void setCallbackFunction(FUNC f){
f(10,20);
}
///////////////////////////////////
class MyClass{
public:
void myCallback(int x,int y)
{
printf("%d %d",x,y);
}
void start()
{
setCallbackFunction(myCallback);
}
};
int main()
{
MyClass c;
c.start();
return 0;
}يظهر خطأ لم أجد له حل /
اقتباسerror C3867: 'MyClass::myCallback': function call missing argument list; use '&MyClass::myCallback' to create a pointer to member
بحثت ووجدت حلول معقدة وأغلبها workaround ، والمشكلة أني مضطر لاستخدام هذه المكتبة ومضطر لتغليف الدالة myCallback داخل كلاس .


