Error del compilador C2682
no se puede utilizar operador_de_conversión para convertir de 'tipo1' en 'tipo2'
Un operador de conversión ha intentado una conversión entre tipos incompatibles. Por ejemplo, no puede usar el operador dynamic_cast para convertir un puntero en una referencia. El operador dynamic_cast
no se puede usar para desechar calificadores. Todos los calificadores de los tipos deben coincidir.
Puede usar el operador const_cast
para quitar atributos como const
, volatile
o __unaligned
.
El ejemplo siguiente genera el error C2682:
// C2682.cpp
class A { virtual void f(); };
class B: public A {};
void g(A* pa) {
B& rb = dynamic_cast<B&>(pa); // C2682
}
El ejemplo siguiente genera el error 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
}