मैं जानता हूँ कि इस बात काम करता है:सी ++ और ओपनजीएल में किसी अन्य फ़ंक्शन के लिए तर्क के रूप में क्लास विधि को कैसे पास किया जाए?
void myDisplay()
{
...
}
int main()
{
...
glutDisplayFunc(myDisplay)
...
}
तो मैं myDisplay() एक वर्ग है कि मैं बनाया करने के लिए समारोह में शामिल करने की कोशिश की। क्योंकि मैं भविष्य में इसे एक अलग वर्ग के साथ अधिभारित करना चाहता हूं। हालांकि, संकलक शिकायत है कि
argument of type 'void (ClassBlah::)()' does not match 'void(*)()' .
यहाँ है कि मैं क्या करने की कोशिश है:
class ClassBlah
{
....
void myDisplay()
....
}
......
int main()
{
...
ClassBlah blah
glutDisplayFunc(blah.myDisplay)
...
}
किसी को भी जानता है कि कैसे इस समस्या को ठीक करने के लिए करता है? बहुत धन्यवाद।
यह अच्छा है। अगर सदस्य थ्रेडफनक आभासी है, और उप-वर्ग के लिए एक बिंदु है तो यह ठीक से काम करता है? – kibibu
मुझे संदेह है कि बूस्ट :: बाइंड यहां काम करेगा, क्योंकि निश्चित रूप से एक संरचना लौटाती है जिसमें एक() ऑपरेटर होता है, जो glutDisplayFunc का उपयोग नहीं कर सकता है। – Thanatos
बाइंड यहां मदद नहीं कर सकता है। बुलाए जाने वाले फ़ंक्शन को 'शून्य (*)() 'प्रकार की कॉलबैक की आवश्यकता होती है। 0-एरी फ़ंक्शन ऑब्जेक्ट का उपयोग नहीं किया जा सकता है। –