Вот мой код -Почему переход между производными * на базу * не выполняется с помощью частного наследования?
#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()
почему я получаю эту ошибку? Может кто-то объяснит это.
Вы не объявили метод 'virtual'. Какую ошибку вы получаете точно? – Dirk
В текущей форме это не имеет никакого отношения к функции 'sid()'. Вы используете личное наследование, поэтому преобразование из 'производного *' в 'base *' не выполняется. Это то, о чем вы спрашиваете, или это что-то связано с методом 'sid()'? – Naveen
Возможный дубликат [Защищенный производный класс] (http://stackoverflow.com/questions/433965/protected-derived-class) – kennytm