Error del compilador C2392
'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
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
El ejemplo siguiente genera el error C2392 y 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);
}