Aquí está mi código -¿Por qué la conversión entre derivada * a base * falla con herencia privada?
#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;
}
Esto da un error de tiempo de compilación.
error: 'base' is an inaccessible base of 'derived'
Desde el compilador tratará de llamar a la clase base sid()
¿por qué recibo este error? Puede alguien por favor explicar esto.
No declaró el método 'virtual'. ¿Qué error es el que está recibiendo exactamente? – Dirk
En su forma actual, esto no tiene nada que ver con la función 'sid()'. Está utilizando una herencia privada, por lo tanto, la conversión de 'derived *' a 'base *' está fallando. ¿Es eso lo que estás preguntando o es algo relacionado con el método 'sid()'? – Naveen
posible duplicado de [clase derivada protegida] (http://stackoverflow.com/questions/433965/protected-derived-class) – kennytm