में संरक्षित एक वर्ग के सदस्य मैं यहाँ एक पुराने codebase है, जहां वे सदस्य चर संरक्षित करते थे। चाहे यह एक अच्छा विचार है या नहीं, पर चर्चा की जा सकती है। हालांकि, कोड gcc3 के साथ ठीक संकलित होना चाहिए। मैं एक व्युत्पन्न टेम्पलेट वर्ग बार उस वर्ग टेम्पलेट फू से इतनापहुँच एक व्युत्पन्न वर्ग
template <class Something> class Foo {
public:
// stuff...
protected:
some::type x;
}
template <class Something> Bar : Foo<Something> {
public:
void cleanup();
}
की तरह और सफाई की विधि घोषणा() वहाँ कुछ एक्स
template <class Something> void Bar<Something>::cleanup() {
doSomeThingCleanUpLike (x);
}
यह करता है के साथ किया है में संरक्षित का उपयोग करता है सदस्य एक्स है जीसीसी 4 के साथ काम नहीं करते, हालांकि इसे जीसीसी 3 के साथ काम करना चाहिए था। यह काम करता है जब मैं इसे
doSomeThingCleanUpLike (this->x);
करने के लिए बदल क्यों मामला है?
शब्द "टेम्पलेट क्लास" अक्सर भ्रम का स्रोत होता है। सही शब्द "वर्ग टेम्पलेट" है, क्योंकि यह चीजें कक्षाओं के लिए एक टेम्पलेट है। यह एक वर्ग नहीं है। मैं आपके प्रश्न को संपादित करूंगा लेकिन संभवतः यह कारणों में से एक है कि आप उलझन में हैं। – MSalters
"सफाई" की आपकी फ़ंक्शन परिभाषा अनुरूप नहीं है। "बार" के लिए रिटर्न प्रकार और टेम्पलेट तर्क याद करता है। सुनिश्चित करें कि यह आपके कोड में कैसा है? –
धन्यवाद litb। मैंने इसे बदल दिया। कैफीन का स्तर इसे स्पॉट करने के लिए पर्याप्त नहीं था। भी "कक्षा टेम्पलेट" में बदल गया। चाहे उसका टेम्पलेट क्लास या क्लास टेम्पलेट समस्या को प्रभावित न करे। शब्द केवल अनौपचारिक रूप से उपयोग किया जाता है। – GeeF