Estoy confundido: pensé que los datos protegidos eran de lectura/escritura por los niños de una clase determinada en C++.¿Los datos protegidos en la clase principal no están disponibles en la clase secundaria?
El fragmento a continuación falla al compilar en la EM Compilador
class A
{
protected:
int data;
};
class B : public A
{
public:
B(A &a)
{
data = a.data;
}
};
int main()
{
A a;
B b = a;
return 0;
}
mensaje de error:
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 15.00.30729.01 for 80x86
Copyright (C) Microsoft Corporation. All rights reserved.
demoFail.cpp
demoFail.cpp(12) : error C2248: 'A::data' : cannot access protected member declared in class 'A'
demoFail.cpp(4) : see declaration of 'A::data'
demoFail.cpp(2) : see declaration of 'A'
¿Qué estoy haciendo mal?
Umph. Para ser precisos, este caso es un caso ficticio solo para demostrar el problema. De hecho, quería hacer una lectura bastante exhaustiva de los datos que se pasan. –
En cualquier caso, puede ensuciar solo con los datos protegidos en la parte A de este u otro objeto B. Si tiene una instancia A o una instancia C que también deriva de A, B no tiene derechos especiales sobre esos As. Si no puede seguir este consejo (haga de esto una parte de esta B copiándola para que sea la parte básica de esta B, a la que tiene acceso), entonces podría tener un problema de diseño que podría requerir una imagen más grande para responder. – UncleBens
@rlbond: la codificación después de la hora de acosar ataca nuevamente. Esto solucionó mi problema. Gracias. :) –