컴파일러 오류 C2682
casting_operator 사용하여 'type1'에서 'type2'로 변환할 수 없습니다.
캐스팅 연산자가 호환되지 않는 형식 간에 변환하려고 했습니다. 예를 들어 dynamic_cast 연산자를 사용하여 포인터를 참조로 변환할 수 없습니다. 연산자는 dynamic_cast
한정자를 캐스팅하는 데 사용할 수 없습니다. 형식의 모든 한정자는 일치해야 합니다.
연산자를 const_cast
사용하여 , volatile
또는 __unaligned
.와 같은 const
특성을 제거할 수 있습니다.
다음 샘플에서는 C2682를 생성합니다.
// C2682.cpp
class A { virtual void f(); };
class B: public A {};
void g(A* pa) {
B& rb = dynamic_cast<B&>(pa); // C2682
}
다음 샘플에서는 C2682를 생성합니다.
// C2682b.cpp
// compile with: /clr
ref struct R{};
ref struct RR : public R{};
ref struct H {
RR^ r ;
short s;
int i;
};
int main() {
H^ h = gcnew H();
interior_ptr<int>lr = &(h->i);
interior_ptr<short>ssr = safe_cast<interior_ptr<short> >(lr); // C2682
interior_ptr<short>ssr = reinterpret_cast<interior_ptr<short> >(lr); // OK
}