'method1': 공변 반환 형식은 관리되는 형식에서 지원되지 않거나 WinRTtypes에서 지원되지 않습니다. 그렇지 않으면 'method2'가 재정의됩니다.
Windows 런타임 멤버 함수 또는 /clr(공용 언어 런타임 컴파일) 옵션을 사용하여 컴파일할 때 공변 반환 형식은 허용되지 않습니다.
예시
다음 샘플에서는 C2392 오류가 발생하는 경우 및 이를 해결하는 방법을 보여 줍니다.
// 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);
}