Compiler Error C2680
Visual Studio 2015
The new home for Visual Studio documentation is Visual Studio 2017 Documentation on docs.microsoft.com.
The latest version of this topic can be found at Compiler Error C2680.
type' : invalid target type for name
A casting operator tried to convert to a type that is not a pointer or reference. The dynamic_cast operator can be used only for pointers or references.
The following sample generates 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 can also occur when the target is not defined:
// 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);
}
}
};
Show: