Was this page helpful?
Your feedback about this content is important. Let us know what you think.
Additional feedback?
1500 characters remaining
Export (0) Print
Expand All
Expand Minimize

Compiler Error C2682

cannot use casting_operator to convert from 'type1' to 'type2'

A casting operator tried to convert between incompatible types. For example, you cannot use the dynamic_cast operator to convert a pointer to a reference. The dynamic_cast operator cannot be used to cast away qualifiers. All qualifiers on the types must match.

You can use the const_cast operator to remove attributes such as const, volatile, or __unaligned.

The following sample generates C2682:

// C2682.cpp
class A { virtual void f(); };
class B: public A {};

void g(A* pa) {
    B& rb = dynamic_cast<B&>(pa); // C2682
}

The following sample generates 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
}
Show:
© 2015 Microsoft