Почему при частном наследовании не удается преобразовать производные * в базовые *?

Вот мой код -

#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 () , почему я получаю эту ошибку? Кто-нибудь может объяснить это.

20
задан Cactus 30 March 2016 в 02:51
поделиться