컴파일러 오류 C2680
'type': 이름에 대한 대상 형식이 잘못되었습니다.
캐스팅 연산자가 포인터나 참조가 아닌 형식으로 변환하려고 했습니다. dynamic_cast 연산자는 포인터 또는 참조에만 사용할 수 있습니다.
다음 샘플에서는 C2680을 생성합니다.
// C2680.cpp
// compile with: /c
class A { virtual void f(); };
class B : public A {};
void g(B b) {
A a;
a = dynamic_cast<A>(b); // C2680 target not a reference type
a = dynamic_cast<A&>(b); // OK
}
대상이 정의되지 않은 경우에도 C2680이 발생할 수 있습니다.
// C2680b.cpp
// compile with: /clr /c
// C2680 expected
using namespace System::Collections;
// Delete the following line to resolve.
ref class A; // not defined
// Uncomment the following line to resolve.
// ref class A{};
public ref class B : ArrayList {
property A^ C[int] {
A^ get(int index) {
return dynamic_cast<A^>(this->default::get(index));
}
void set(int index, A^ value) {
this->default::set(index, value);
}
}
};