Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Actualización: noviembre 2007
La manera en que se controlan las funciones virtuales privadas en clases derivadas ha cambiado de Extensiones administradas para C++ a Visual C++ 2008.
En Extensiones administradas, el nivel de acceso de una función virtual no restringe su capacidad para ser reemplazada dentro de una clase derivada. En la nueva sintaxis, una función virtual no puede reemplazar a una función virtual de clase base a la que no puede tener acceso. Por ejemplo:
__gc class Foo {
// inaccessible to a derived class
virtual void g();
};
__gc class Bar : public Foo {
public:
// in Managed Extensions, ok: g() overrides Foo::g()
// in new syntax, error: cannot override: Foo::g() is inaccessible …
void g();
};
No hay ninguna asignación real de este tipo de diseño a la nueva sintaxis. Se debe permitir simplemente el acceso a los miembros de clase base, es decir que no sean privados. Los métodos heredados no tienen que soportar el mismo acceso. En este ejemplo, el cambio menos invasivo es hacer que los miembros estén Fooprotected. Este modo, en que el programa general tiene acceso al método mediante Foo, sigue estando prohibido.
ref class Foo {
protected:
virtual void g();
};
ref class Bar : Foo {
public:
virtual void g() override;
};
Observe que la ausencia de la palabra clave virtual explícita en la clase base, en la nueva sintaxis, genera un mensaje de advertencia.
Vea también
Conceptos
Declaraciones de miembros en una clase o interfaz