c++ - 如何让派生类访问私有(private)成员数据?

标签 c++

我遇到了一个 C++ 问题。我有一个基类,它在类的私有(private)可见区域内有一个自引用对象指针。我在基类中有一个构造函数来初始化这两个指针。现在我的派生类的访问说明符是私有(private)的(我想将基类的公共(public)成员函数设为私有(private))。现在通过我的派生类的成员函数,我想创建一个对象指针,它可以指向基类的私有(private)数据,即那些自引用对象指针。我的代码是:

class base{
private:
     base *ptr1;
     int data;
public:
     base(){}
     base(int d) { data=d }
};

class derived:private base{
public:
     void member()
};

void derived::member()
{
base *temp=new base(val); //val is some integer
temp->ptr1=NULL; //I can't make this happen. To do this I had to declare all the
                 //private members of the base class public. 
}

最佳答案

派生类不能访问其基类的私有(private)成员。任何类型的继承都不允许访问私有(private)成员。

但是,如果您使用 friend 声明,您可以这样做。

关于c++ - 如何让派生类访问私有(private)成员数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18944451/

相关文章:

c++ - 等待系统调用完成

c++ - 如何在 Windows 桌面应用程序的 MediaFoundation SourceReader 中使用英特尔硬件 MJPEG 解码器 MFT?

c++ - 如何在 DirectWrite 中使用默认 UI 字体绘制文本?

c++ - 了解 visual studio 2010 中的编译器选项差异和严格的 C++ 合规性

c++ - "inString not declared in this scope"

c++ - 如何在没有某种数组的情况下输入多个值

c++ - enable_if 迭代器作为默认模板参数?

c++ - 生成用户定义素数的相对素数?

c++ - 计算二进制数据

c++ - 查找最大容器大小 C++