Sdílet prostřednictvím


Chyba kompilátoru C2392

Method1: kovariantní návratové typy nejsou podporovány ve spravovaných typech nebo WinRTtype, jinak by se metoda2 přepsala.

Poznámky

Kovariantní návratové typy nejsou povoleny pro prostředí Windows Runtime členské funkce nebo při kompilaci pomocí možnosti /clr (Common Language Runtime Compilation).

Příklad

Následující příklad vygeneruje C2392 a ukazuje, jak ji opravit.

// 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);
}