आपके द्वारा प्रस्तावित प्रस्तावों के साथ अलग-अलग मुद्दे हैं, जिनमें से पहला पहले से ही अन्य उत्तरों में निपटाया गया है: यदि आप किसी आधार पर सूचक के माध्यम से हटाना चाहते हैं तो आपको केवल आभासी विनाशकों की आवश्यकता होती है (एक सामान्य सिफारिश या तो जनता को प्रदान करना है वर्चुअल विनाशक या संरक्षित गैर-वर्चुअल विनाशक जो बेस क्लास के माध्यम से हटाने को रोक देगा)।
उसमें एक और मुद्दा है जब एक कंपाइलर कक्षा परिभाषा को देखता है, यह संभवतः यह नहीं जान सकता कि यह व्युत्पन्न किया जा रहा है या नहीं। विचार करें कि क्या आप एक अनुवाद इकाई में बेस क्लास लागू करते हैं। बाद में आप कक्षा से निकलते हैं। यदि वह व्युत्पन्न कन्स्ट्रक्टर वर्चुअल बनाने का संकेत देगा, तो बेस क्लास अनुवाद को फिर से सम्मिलित करना होगा, या फिर आपके प्रोग्राम में ओडीआर (वन डेफिनिशन नियम) टूटा जाएगा।
यदि आप मिश्रण में अन्य अनुवाद इकाइयां जोड़ते हैं, तो चीजें और भी बदतर हो जाती हैं।जब भी आप एक अनुवाद इकाई से हेडर फ़ाइल शामिल करते हैं तो आपको मैन्युअल रूप से को कम से कम एक शीर्षलेख शामिल करना होगा जहां उस वर्ग से व्युत्पन्न वस्तु परिभाषित की जाती है (बढ़ते युग्मन), या फिर, संकलक एक अलग परिभाषा उत्पन्न करेगा उस अनुवाद इकाई में उस एकल वर्ग के लिए (अनुवाद इकाई की तुलना में जहां व्युत्पन्न वर्ग परिभाषित किया गया है) ओडीआर को फिर से तोड़ना।
समस्या यह है कि संकलक केवल आपके प्रोजेक्ट का आंशिक दृश्य है, और वास्तव में यह नहीं देख सकता कि आपको क्या चाहिए/जो चाहिए उसे देखना चाहिए।
स्रोत
2010-06-20 23:49:45
सटर ने उस पर [Virtuality] (http://www.gotw.ca/publications/mill18.htm) लिखा था। –
जो एक अद्भुत पढ़ा गया था! धन्यवाद –