c++ - unable to pass Template function as a callback parameter -
कृपया नीचे दिए गए कोड का संदर्भ लें:
typedef शून्य (* टाइमर कॉलबैक) (int RequestID_in, शून्य * अतिरिक्त Parameter_in); वर्ग MyTimer {सार्वजनिक: MyTimer () {} bool अनुसूची (int इंटरवल_इन, टाइमरकॉलबैक टाइमरकॉलबैक_इन, शून्य * अतिरिक्त Parameter_in) {// कुछ लॉजिक रिटर्न सच; }}; नामस्थान {टेम्पलेट & lt; कक्षा T & gt; शून्य myTimerFunc (Int RequestID_in, शून्य * अतिरिक्त Parameter_in) {MyLogic & lt; T & gt; * plogic = static_cast & lt; MyLogic & lt; T & gt; * & gt; (अतिरिक्त Parameter_in); If (plogic) {// कुछ करना}}} टेम्पलेट & lt; class T & gt; क्लास मायलोगिक {सार्वजनिक: मायलोगिक () {} शून्य परीक्षण मे () {मायटिमर एटिमर; ATimer.schedule (10, myTimerFunc & lt; T & gt ;, यह); }}; Int main () {मायोलॉजिक & lt; int & gt; myLogic; myLogic.testMe (); }
मैं VC6 कंपाइलर का उपयोग कर रहा हूं और कम्पाइलर निम्नलिखित त्रुटि फेंकता है:
त्रुटि C2664: 'अनुसूची': 'शून्य' से पैरामीटर 2 कन्वर्ट नहीं किया जा सकता , शून्य *) 'शून्य' (__cdecl *) (int, शून्य *) '' इस नाम के साथ कार्य में कोई भी कार्य लक्ष्य प्रकार ई: \ test \ BTest \ BTest.cpp (46) से मेल खाती है: टेम्पलेट सदस्य फ़ंक्शन 'शून्य __thiscall MyLogic :: testMe (शून्य)'
मैंने इस कोड को विजुअल स्टूडियो 2008 में परीक्षण किया और यह बिना किसी समस्या के ठीक काम करता है।
मुझे पता है वीसी 6 एक पुरानी संकलक है लेकिन मेरा प्रोजेक्ट सोर्स कोड (लीगेसी) अभी भी वीसी 6 के साथ संकलित है।
इसलिए, संभव है कि इस कोड को संकलित करने के लिए संभव है?
< विज़ुअल स्टूडियो का सभी संस्करण मैं फ़ंक्शन पॉइंटर्स में टेम्प्लेट फ़ंक्शंस को हल करने / बदलने / संकलन करने के लिए मिला है। मैं जिस वैकल्पिक हल का उपयोग करता हूं, वह एक id ()
फ़ंक्शन का उपयोग करना है जो अपनी तर्क को अपरिवर्तित :
टेम्पलेट & lt; class T & gt; टी आईडी (टी टी) {वापसी टी; } टेम्पलेट & lt; वर्ग T & gt; क्लास मायलोगिक {सार्वजनिक: मायलोगिक () {} शून्य परीक्षण मे () {मायटिमर एटिमर; ATimer.schedule (10, आईडी (myTimerFunc & lt; T & gt;), यह); // ------------------ ^^ ()}};
यह दृश्य स्टूडियो 6 के तहत संकलित है। कृपया ध्यान दें, कि मेरा टायमरफंक का प्रकार यहां नहीं बदलता, यह केवल संकलक को चीजों को हल करने में मदद करता है
Comments
Post a Comment