पिंपल बहुत सारे C++ कोड में बॉयलरप्लेट का स्रोत हैं। वे इस तरह की चीज की तरह लगते हैं कि मैक्रोज़, टेम्पलेट्स और शायद थोड़ी बाहरी उपकरण सहायता का संयोजन हल हो सकता है, लेकिन मुझे यकीन नहीं है कि सबसे आसान तरीका क्या होगा। I've seen templates जो कुछ उठाने में मदद करता है लेकिन ज्यादा नहीं - आपको अभी भी कक्षा के हर तरीके के लिए अग्रेषण कार्यों को लिखने की आवश्यकता है जिसे आप लपेटने की कोशिश कर रहे हैं। क्या कोई आसान तरीका है?सी ++ कक्षाओं के स्वचालित पंपलिंग - क्या कोई आसान तरीका है?
मैं मेक प्रक्रिया के हिस्से के रूप में उपयोग किए जाने वाले टूल की कल्पना कर रहा हूं। आप चाहते हैं कि आपके पब्लिक हेडर कक्षाओं को पंपल करें, ताकि आप कुछ इनपुट फ़ाइल प्रदान कर सकें, pimpl.in कहें, जो कक्षाओं को लागू करता है (जिसे अन-पिंपल किया गया है) जिसे आप लपेटना चाहते हैं, फिर उस फ़ाइल की जांच की जाती है, पिंपल कक्षाएं उत्पन्न होती हैं और केवल 'हेड इंस्टॉल' के दौरान उनके शीर्षलेख (मूल वर्ग के शीर्षलेख नहीं) स्थापित होते हैं। समस्या यह है कि मुझे बिना किसी फ्लाइंग सी ++ पार्सर के ऐसा करने का कोई तरीका नहीं दिखता है, कुछ संकलक विक्रेता भी सही नहीं हो सकते हैं। हो सकता है कि कक्षाएं किसी भी तरह से लिखी जा सकें जो बाहरी उपकरण का काम आसान बनाती है, लेकिन मुझे यकीन है कि मैं सभी प्रकार के कोने के मामलों (जैसे टेम्पलेटेड क्लास और/या टेम्पलेटेड सदस्य फ़ंक्शंस) खोना समाप्त कर दूंगा।
कोई विचार? क्या कोई और इस समस्या के समाधान के साथ पहले से आया है?
class ClassA {
virtual void foo() = 0;
static ClassA *create();
};
// in ClassA.cpp
class ImplA : public ClassA {
/* ... */
};
ClassA *ClassA::create() {
return new ImplA();
}
हालांकि यह vtable समारोह संकेत प्राप्त करते समय से भूमि के ऊपर जोड़ता है:
लेज़ी सी ++ कुछ ऐसा ही – Amnon