如果类(class)女儿(孙女继承自该类(class))从访问权限指定符设置为PRIVATE的类(class)母亲继承,为什么类(class)母亲无法从类(class)孙女访问?我无法创建对象或指针。为什么?这种行为背后的逻辑是什么?如果我在孙女类(class)中使用母亲对象,可能会有什么问题?并且,与最后一个问题相关,为什么如果类(class)女儿从访问权限设置为PUBLIC或PROTECTED的母亲类继承而来,那么我可以将一个母亲对象创建到孙女类中?那些问题难道不会回到我身边吗?
#include <iostream>
#include <stdio.h>
using namespace std;
class mother
{
public:
mother(){};
};
class daughter : private mother
{
public:
daughter(){};
};
class granddaughter : public daughter
{
public:
granddaughter(){}; // ERROR
mother* mother; // ERROR
};
int main(void){return 0;}
最佳答案
您可以创建mother
指针和实例。但是,由于名称解析规则,mother
typename将引用私有(private)基类。为了解决这个问题,您可以使用完全限定的类型名称::mother
将该类型称为非基类型:
class granddaughter : public daughter
{
public:
::mother* mother; // NO ERROR
};