के रूप में एक सी ++ वर्ग के सदस्य समारोह का उपयोग करते हुए मैं एक सी पुस्तकालय एक कॉलबैक फ़ंक्शन की जरूरत है कि कुछ प्रसंस्करण अनुकूलित करने के लिए पंजीकृत किया जाना है। कॉलबैक फ़ंक्शन का प्रकार int a(int *, int *)
है।एक सी कॉलबैक फ़ंक्शन
मैं लिख रहा हूँ सी ++ निम्नलिखित और एक सी रजिस्टर करने के लिए कोशिश ++ कॉलबैक समारोह के रूप में वर्ग समारोह के समान कोड:
In constructor 'A::A()',
error:
argument of type ‘int (A::)(int*, int*)’ does not match ‘int (*)(int*, int*)’.
मेरे सवालों का:
class A {
public:
A();
~A();
int e(int *k, int *j);
};
A::A()
{
register_with_library(e)
}
int
A::e(int *k, int *e)
{
return 0;
}
A::~A()
{
}
संकलक त्रुटि निम्नलिखित फेंकता
- सबसे पहले सी ++ कक्षा मेमबर फ़ंक्शन को पंजीकृत करना संभव है जैसे कि मैं ऐसा करने की कोशिश कर रहा हूं और यदि ऐसा है ओउ? (मैंने 0.पर 32.8 पढ़ा है। लेकिन मेरी राय में यह समस्या का समाधान नहीं करता है)
- क्या इससे निपटने के लिए एक वैकल्पिक/बेहतर तरीका है?
हां। वह समाधान काम किया। मुझे भ्रमित करता है कि कंपाइलर त्रुटि int (ए ::) (ए *, int *, int *) 'int() (int, int *)' – Methos
से मेल नहीं खाता है, लेकिन यह डालकर (ए: :) जिसका मतलब है कि फ़ंक्शन कक्षा ए का हिस्सा है, जो वहां से 'यह' सूचक इंगित करता है। – GManNickG
मैं सिर्फ उत्सुक हूं ... क्या यह मानक में निर्दिष्ट है? मैंने बस कक्षाओं के अनुभाग में देखा और इसे नहीं मिला। फिर भी, बहुत दिलचस्प है। मैं बस यह नहीं सोचूंगा कि हर कंपाइलर को इस तरह से गैर स्थैतिक सदस्य कार्यों को संभालना होगा। – Tom