No puedo llamar a la función protegida en mi clase base. ¿Por qué? Se ve algo como esto:no puede llamar a funciones protegidas de clase base?
class B : B2
{
public:
virtual f1(B*)=0;
protected:
virtual f2(B*) { codehere(); }
}
class D : public B
{
public:
virtual f1(B*b) { return f2(b); }
protected:
virtual f2(B*b) { return b->f2(this); }
}
En msvc me sale el error C2248 de error: 'nombre de la clase :: :: f2': no se puede acceder miembro protegido declarado en la clase ':: Nombre de la clase'
En gcc Obtengo el error: 'virtual int name :: class :: f2()' está protegido.
¿Por qué es eso? Pensé que el objetivo de los miembros protegidos es llamar a las clases derivadas.
Al menos agregue código que compilará y generará los errores que desea que solucionemos. El código anterior tiene tantos otros errores de sintaxis que resolver su problema se vuelve irracional. –
estoy de acuerdo con Martin. si quieres que te ayudemos, invierte algo de tiempo en hacer que tu código sea C++ (sin omitir los tipos de retorno, punto y coma, etc.) –