共用方式為


編譯器錯誤 C2682

無法使用 casting_operator 從 'type1' 轉換成 'type2'

轉換運算子嘗試在不相容的類型之間轉換。 例如,您無法使用 dynamic_cast 運算子,將指標轉換成參考。 dynamic_cast運算子無法用來轉換限定符。 類型上的所有限定符都必須相符。

您可以使用 const_cast 運算子來移除 屬性,例如 constvolatile__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
}