c++ - 为什么派生*到基*之间的转换会因私有(private)继承而失败?

标签 c++ private base derived accessible

这是我的代码 -

#include<iostream>
using namespace std;

class base
{
public:
    void sid()
    {
    }  
};

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

int main()
{
    base * ptr;
    ptr = new derived; // error: 'base' is an inaccessible base of 'derived'
    ptr->sid();
    return 0;
}

这会产生编译时错误。

error: 'base' is an inaccessible base of 'derived'

既然编译器会尝试调用基类sid(),为什么会出现这个错误?有人可以解释一下吗?

最佳答案

我怀疑问题是你不能将派生指针转换为基指针,因为继承是私有(private)的。

关于c++ - 为什么派生*到基*之间的转换会因私有(private)继承而失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3674876/

相关文章:

java - 关于字段的私有(private)静态最终关键字的快速 Java 问题

ios - 我想拥有一个私有(private)的 iOS 应用程序,我可以只支付 99 美元的费用并让用户永远成为 beta 测试员吗?

c++ - 置换算法 C++

Typescript - 重载私有(private)方法

database - 银行 overdraw 罚款是否与技术限制有关?

C++:如何防止私有(private)名称污染派生类型?

javascript - 如何在 Javascript 中将小数(基数 10)转换为小数基数(即基数 3/2)

c++ - 在 automake/gcc 中混合 C++98 和 C++11 源代码

c++ - std::array 的类型特征

c++ - 从文本文件/文本流错误中读取 QStrings