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.
'método1': en los tipos administrados o de WinRT no se admiten los tipos de valores devueltos de covariante, de lo contrario 'método2' se invalidaría
Observaciones
No se admiten tipos de valores devueltos de covariante para las funciones miembro de Windows Runtime ni en compilaciones con la opción /clr (compilación con Common Language Runtime).
Ejemplo
En el ejemplo siguiente se genera la advertencia C2392 y se muestra cómo corregirlo.
// C2392.cpp
// compile with: /clr
public ref struct B {
public:
int i;
};
public ref struct D: public B{};
public ref struct B1 {
public:
virtual B^ mf() {
B^ pB = gcnew B;
pB->i = 11;
return pB;
}
};
public ref struct D1: public B1 {
public:
virtual D^ mf() override { // C2392
// try the following line instead
// virtual B^ mf() override {
// return type D^ is covariant with B^, not allowed with CLR types
D^ pD = gcnew D;
pD->i = 12;
return pD;
}
};
int main() {
B1^ pB1 = gcnew D1;
B^ pB = pB1->mf();
D^ pD = dynamic_cast<D^>(pB);
}