コンパイラ エラー C2682
casting_operator を使用して 'type1' から 'type2' に変換することはできません
キャスト演算子により互換性のない型の変換が試みられました。 たとえば、dynamic_cast 演算子を使用してポインターを参照に変換することはできません。 dynamic_cast
演算子は、修飾子のキャストには使用できません。 型のすべての修飾子が一致している必要があります。
const_cast
演算子を使用して、const
、volatile
、__unaligned
などの属性を削除できます。
次の例では 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
}