父类成员变量在继承类中不可见
当继承一个类作为模板时,父类的受保护变量可能不可见在继承的类中可见。这可能会导致在访问继承类中的这些变量时出现编译错误。
考虑以下示例:
<code class="cpp">// Parent class template <class elemType> class arrayListType { protected: elemType *list; int length; // ... }; // Inherited class template <class elemType> class unorderedArrayListType: public arrayListType<elemType> { public: void insertAt(int location, const elemType& insertItem); // ... };</code>
当编译器遇到 unorderedArrayListType 类时,它会尝试验证 insertAt 函数。但是,它找不到 arrayListType 类中声明的 length 和 list 变量。这会导致编译错误。
解决方案
要解决此问题,有两种可能的解决方案:
1。前缀为 this->
继承的变量前缀为 this->显式指定它们属于父类:
<code class="cpp">// Inherited class template <class elemType> class unorderedArrayListType: public arrayListType<elemType> { public: void insertAt(int location, const elemType& insertItem) { this->length++; // ... } // ... };</code>
2.使用声明
在继承类的私有部分声明继承的变量:
<code class="cpp">// Inherited class template <class elemType> class unorderedArrayListType: public arrayListType<elemType> { private: using arrayListType<elemType>::length; using arrayListType<elemType>::list; public: void insertAt(int location, const elemType& insertItem) { length++; // ... } // ... };</code>
这两种方法都确保编译器显式地理解继承的变量来自父类.
以上是为什么我无法访问继承类中的父类成员变量?的详细内容。更多信息请关注PHP中文网其他相关文章!