में किसी फ़ंक्शन में "किसी भी प्रकार का डेटा" कैसे पास कर सकता हूं, मान लें कि मेरे पास स्ट्रिंगहैंडर, कुछ टाइप टाइपलर, अन्य टाइप टाइपलर जैसे कुछ उप-वर्गों के साथ एक कक्षा हैंडलर है। कक्षा हैंडलर सभी उप-वर्गों के लिए एक सामान्य इंटरफ़ेस के रूप में एक विधि "हैंडल" को परिभाषित करता है। "हैंडल" के लिए तर्क विभिन्न हैंडलरों के लिए पूरी तरह से अलग है।मैं सी ++
तो मुझे जो करना है वह हैडल विधि में किसी भी चीज़ का मूल्य पास कर रहा है। विशिष्ट वर्ग तब "कुछ भी" उस प्रकार के प्रकार को डाल सकते हैं जिसकी वे अपेक्षा करते हैं।
असल में मैं क्या जरूरत है जावा वर्ग वस्तु की तरह कुछ है: डी
पहली बात मैंने कोशिश की एक void*
था, लेकिन जाहिरा तौर पर आप B* someB = dynamic_cast<B*>(theVoidPointer)
ऐसा नहीं कर सकते, इसलिए कोई किस्मत वहाँ।
मेरा दूसरा विचार boost::any
का उपयोग करना था। हालांकि, बूस्ट :: किसी भी का उपयोग करने की आवश्यकता यह है कि मान को प्रतिलिपि बनाने योग्य प्रतिलिपि बनाना चाहिए, जो मेरे डेटा का मामला नहीं है।
इसे काम करने के लिए कोई विचार?
धन्यवाद
संपादित करें: ध्यान दें मैं मैं सब पर कोई सदस्यों के साथ एक SomeData वर्ग इस्तेमाल कर सकते हैं पता है कि, और अपने डेटा के उपवर्गों रहने दो, लेकिन मैं एक अधिक सामान्य दृष्टिकोण है जो मुझे आवश्यकता नहीं है के लिए देख रहा हूँ अपना खुद का रैपर वर्ग बनाने के लिए।
क्या आप वाकई 'dynamic_cast'' की आवश्यकता है, और 'reinterpret_cast' का उपयोग नहीं कर सकते? –
टेम्पलेट्स का उपयोग करने के बारे में कैसे? –
ऐसा लगता है कि आपके अधिकांश विकल्पों का वर्णन यहां दिया गया है: http://stackoverflow.com/questions/913505/casting-void-pointers-depending-on-data-c – briantyler