2012-04-03 31 views
7

मेरे पास शून्य के साथ एक कार्य है * इसके पैरामीटर में से एक (शून्य को सामान्य वस्तु के रूप में उपयोग किया जाता है)। लेकिन उस सामान्य वस्तु में एक फ़ंक्शन को कॉल करने में सक्षम होने के लिए, मुझे इसे पहले डालना होगा, और इसके लिए मुझे यह जानने की आवश्यकता है कि कक्षा किस प्रकार है। और मैं जानना चाहता था, क्या कक्षा या कुछ जानकारी उत्तीर्ण करना संभव है जो मुझे ऑब्जेक्ट को फ़ंक्शन पैरामीटर के रूप में डालने की अनुमति देता है?क्या सी ++ में किसी फ़ंक्शन के पैरामीटर के रूप में कक्षा को पास करना संभव है?

+0

आप समारोह शून्य होने का मालिक एक पैरामीटर के रूप * रहे हैं या यह एक बाहरी एपीआई का हिस्सा है:

एक उदाहरण के रूप में

class SomeClass { public: template<typename CastClass> void DoSomething(void* someArg) { (CastClass)someArg; } }; 

प्रयोग इस तरह के कुछ हो सकता है? –

+0

मैं func – XaitormanX

+6

का मालिक हूं यह आमतौर पर एक बहुत ही बुरा विचार है जो इनपुट के रूप में शून्य * के साथ एक फ़ंक्शन प्रदान करता है। जेनेरिक व्यवहार प्राप्त करने के लिए बेहतर तरीका है: टेम्पलेट या विरासत का उपयोग करना। आपको अपने डिजाइन पर पुनर्विचार करना चाहिए। –

उत्तर

9

किसी भी मौके से आपने Templates देखा है?

class A{ }; // Some random test class 

SomeClass test; 
A a; 
test.DoSomething<int>(&a); // The template parameter can be anything. 
          // I just have int to make it a smaller example. 
+0

करूँगा लेकिन मुझे उस फ़ंक्शन को कक्षा के अंदर होने की आवश्यकता है, और मैं उस वर्ग को टेम्पलेट नहीं बना सकता – XaitormanX

+0

@XaitormanX: अद्यतन उदाहरण – josephthomas

+0

धन्यवाद। और इसका इस्तेमाल कैसे किया जाएगा? – XaitormanX

संबंधित मुद्दे

 संबंधित मुद्दे