inheritance - C++ Template class inheriting another template class with a template-specified input type -


संभावित डुप्लिकेट:



<

मेरी समस्या को स्पष्ट करने के लिए कुछ कोड है ...

एक आधार टेम्पलेट वर्ग:

  टेम्पलेट & lt; वर्ग T & gt; कक्षा परीक्षणबेस {सार्वजनिक: int someInt; };   

एक और टेम्पलेट वर्ग के साथ टेस्टबेस को उपवर्ग करने का प्रयास ...

यह " कुछ गुंजाइश को इस समय "संकलित समय" में घोषित नहीं किया गया था: <पूर्व> टेम्पलेट & lt; वर्ग X & gt; वर्ग टेस्टस्ब: सार्वजनिक टेस्टबेस & lt; X & gt; {शून्य testf () {someInt = 0; // त्रुटि: "कुछ बिंदु इस प्रकार" में घोषित नहीं किया गया था "}}; बी) यह ठीक काम करता है (अंतर यह है कि मैं स्पष्ट रूप से टेस्टबेस के टेम्पलेट इनपुट को निर्दिष्ट करता हूं)

  टेम्पलेट & lt; class X & gt ; वर्ग टेस्टस्ब: सार्वजनिक टेस्टबेस & lt; स्ट्रिंग & gt; {शून्य testf () {someInt = 0; }};            

P> अग्रिम में धन्यवाद।

क्योंकि एक्स X पर एक्सप्लोर किया जा रहा है क्योंकि TestBase विशेष हो सकता है। इसलिए आपको संकलन को जाने की आवश्यकता है कुछ INT पूरी तरह से योग्यता के आधार पर एक आश्रित मूल्य है। इसके बजाय

  someInt = 0  

के बजाय

  TestBase & lt; X & gt; :: someInt = 0   

आप भी उपयोग कर सकते हैं

  this- & gt; someInt = 0  

मुद्दा यह है कि कंपाइलर एक नाम नहीं ग्रहण करेगा यह एक टेम्पलेट पैरामीटर पर निर्भर करता है जिसे यह पता होना चाहिए कि इससे पहले कि वह विलंब से समय की जांच करता है। एक प्रयोग के लिए देखें कि क्या होता है जब आप एक वैश्विक कुछ आईआईएम परिचय करते हैं।


Comments