एक बार पहले, मुझे यकीन था कि आप ऐसा नहीं कर सके, लेकिन दूसरे दिन मैं कुछ कोड के साथ खेल रहा था और यह संकलन और काम करना प्रतीत होता था। मैं बस यह सत्यापित करना चाहता हूं कि मैं सिर्फ भाग्यशाली नहीं हूं। क्या एक टेम्पलेट क्लास में शुद्ध आभासी फ़ंक्शन हो सकता है - जो मुझे लगता है कि केवल सादा वर्चुअल विधियां भी विनाशक के लिए वैध होंगी?एक टेम्पलेट वर्ग के भीतर शुद्ध वर्चुअल विधियों की अनुमति है?
template <typename WordType> class DataSource
{
public:
DataSource();
DataSource(DataSource const& other);
virtual ~DataSource();
virtual void Put(
WordType const* const data,
unsigned int const wordCount) = 0;
}
मैं इसे देख कोशिश की है ऑनलाइन और जो कुछ मैं कर लिया है आप इस जैसे एक आभासी विधि (शुद्ध या अन्यथा) एक सामान्य वर्ग में नहीं हो सकता है जो:
class DataSource
{
public:
DataSource();
DataSource(DataSource const& other);
virtual ~DataSource();
template <typename WordType>
virtual void Put(
WordType const* const data,
unsigned int const wordCount) = 0;
}
और यह कि सभी प्रकार के संभावित प्रकारों के संदर्भ में वर्चुअल टेबल के प्रबंधन की अक्षमता के कारण इस विधि को तत्काल किया जाएगा।
हालांकि, जब यह टेम्पलेट वर्ग के वर्चुअल सदस्य फ़ंक्शन पर आया, तो यह अलग-अलग प्रतीत होता है क्योंकि संपूर्ण वर्ग स्वयं टेम्पलेट पैरामीटर के माध्यम से "बनाया गया" होता है जब टेम्पलेट क्लास चर को instanciated किया जाता है। इस बिंदु पर, वर्चुअल विधि टेम्पलेट्स की "खोज-और-प्रतिस्थापन" प्रकृति के कारण कक्षा के किसी भी अन्य वायरल विधि की तरह ही है।
वैसे भी, प्रश्न में फिर से खोने के मामले में सवाल बताते हुए: आभासी (शुद्ध और/या सामान्य) आभासी कार्यों को एक टेम्पेट कक्षा में अनुमति दी जाती है?
ऐसा लगता है कि आप पहले से ही इस का जवाब खोज निकाला है की तरह ... –
जैसा कि मैंने कहा, मैं अपने आप को कसम कि मैं इसे पहले की कोशिश की और मुद्दों था। जब यह अचानक काम करता था, मैं यह सुनिश्चित करना चाहता था कि यह सिर्फ इसलिए नहीं था क्योंकि मैं एक अलग कंपाइलर, विभिन्न चेतावनी/त्रुटि झंडे आदि पर था और यह परिभाषित किया गया था - अधिमानतः - यह मानक द्वारा ठीक था। – Anthony
इसके अलावा, इसके लायक होने के लिए, मुझे कुछ भी ऑनलाइन नहीं मिला जो निश्चित रूप से एक या दूसरे तरीके से कहा जाता है। एसओ से इस जानकारी को रखने के लिए बेहतर जगह क्या है? – Anthony