首页 > 后端开发 > C++ > 为什么我无法访问继承类中的父类成员变量?

为什么我无法访问继承类中的父类成员变量?

DDD
发布: 2024-11-01 01:03:28
原创
503 人浏览过

Why Can't I Access Parent Class Member Variables in My Inherited Class?

父类成员变量在继承类中不可见

当继承一个类作为模板时,父类的受保护变量可能不可见在继承的类中可见。这可能会导致在访问继承类中的这些变量时出现编译错误。

考虑以下示例:

<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&amp; 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&amp; 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&amp; insertItem) {
        length++;
        // ...
    }
    // ...
};</code>
登录后复制

这两种方法都确保编译器显式地理解继承的变量来自父类.

以上是为什么我无法访问继承类中的父类成员变量?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板