다음을 통해 공유


컴파일러 오류 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
}