c++ - Can't access base class field -
मैंने ऐसा आधार वर्ग बनाया है:
#include & lt; cstdint & gt; # शामिल & lt; इटरेटर & gt; # शामिल करें & lt; cstdint & gt; #include & lt; vector & gt; # शामिल करें & lt; initializer_list & gt; वर्ग PSBaseObject {protected: inline std :: int32_t * size_ptr (शून्य * डेटा) {रिटर्न reinterpret_cast & lt; std :: int32_t * & gt; (डेटा) - 1; } इनलाइन कंट्रास्ट std :: int32_t * size_ptr (शून्य * डेटा) const {रिटर्न reinterpret_cast
तब मैं PSObject
(नहीं PSBaseObject
) से इस तरह से प्राप्त करता हूं:
टेम्पलेट & lt; typename टी & gt; वर्ग PSArray: सार्वजनिक PSObject & lt; std :: vector & lt; T, कस्टमअेलोकेटर & lt; T & gt; & gt; & gt; {निजी: टाइपफीफेड स्टडी :: वेक्टर & lt; टी, कस्टमअलोओकेटर & lt; T & gt; & gt; underlying_type; सार्वजनिक: typedef std :: size_t size_type; Typedef std :: ptrdiff_t अंतर_प्रकार; टाइपिंगफेड टी * पॉइंटर; टाइपएफ़ीफ़ कॉन्स्ट टी * कॉन्स्ट_ पॉइंटर; टाइपिंगफेड टी एंड amp; संदर्भ; टाइप-टोफ कॉन्स्ट टी एंड amp; const_reference; Typedef टी value_type; Typedef typename underlying_type :: इटरेटर इटरेटर; Typedef typename underlying_type :: iterator :: const_iterator const_iterator; Typedef std :: reverse_iterator & lt; const_iterator & gt; const_reverse_iterator; Typedef std :: reverse_iterator & lt; इटरेटर & gt; reverse_iterator; स्पष्ट PSArray (): डेटा (कस्टमअलोओकेटर & lt; T & gt; ()) {* size_ptr () = 0; } स्पष्ट PSArray (size_type आकार): डेटा (आकार, CustomAllocator & lt; T & gt; ()) {* size_ptr () = आकार - 1; } स्पष्ट PSArray (size_type आकार, const T & amp; मान): डेटा (आकार, std :: forward & lt; decltype (मान) & gt; (मान), कस्टमअेलोकेटर & lt; T & gt; ()) {* size_ptr () = आकार - 1; }}; एट मुख्य () {}
और यह मुझसे कहता है:
त्रुटि: कक्षा 'PSArray & lt; T & gt;' में 'डेटा'
यह "डेटा" फ़ील्ड अपने आधार वर्ग से क्यों नहीं देख रहा है? इसके अलावा क्या मेरे टाइप-फेफ को बेस क्लास में स्थानांतरित करने के लिए और क्या बच्चा अभी भी उन्हें देख पा रहा है?
आप एक व्युत्पन्न वर्ग के अंदर आधार वर्ग के डेटा
क्षेत्र को प्रारंभ नहीं कर सकते हैं; आपको एक कन्स्ट्रक्टर को T
प्रकार के ऑब्जेक्ट देने की आवश्यकता होगी, और फिर बेस क्लास कन्स्ट्रक्टर उस मान के साथ Data आरंभ कर सकता है।
Comments
Post a Comment