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.
dynamic_cast usado para realizar la conversión a base inaccesible o ambigua; se producirá un error de prueba en tiempo de ejecución ("type1" a "type2")
Observaciones
Usó dynamic_cast para convertir de un tipo a otro. El compilador determinó que la conversión siempre generaría un error (devolver NULL), porque no se puede acceder a una clase base (por ejemplo, private) o es ambigua (por ejemplo, aparece más de una vez en la jerarquía de clases).
Example
A continuación, se muestra un ejemplo de esta advertencia. La clase B deriva de la clase A. El programa usa dynamic_cast para convertir de la clase B (la clase derivada) a la clase A, lo que siempre generará un error porque la clase B es private y, por lo tanto, es inaccesible. Para resolver la advertencia, cambie el acceso de A a public.
// C4540.cpp
// compile with: /W1
struct A {
virtual void g() {}
};
struct B : private A {
virtual void g() {}
};
int main() {
B b;
A * ap = dynamic_cast<A*>(&b); // C4540
}