Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
dynamic_cast używane do konwersji na niedostępną lub niejednoznaczną bazę; Test czasu wykonywania zakończy się niepowodzeniem (typ1" do "type2")
Uwagi
Użyto dynamic_cast konwersji z jednego typu na inny. Kompilator ustalił, że rzutowanie zawsze zakończy się niepowodzeniem (zwraca wartość NULL), ponieważ klasa bazowa jest niedostępna (na przykład) lub niejednoznaczna (privatepojawia się więcej niż raz w hierarchii klas).
Example
Poniżej przedstawiono przykład tego ostrzeżenia. Klasa B pochodzi z klasy A. Program używa dynamic_cast do rzutowania z klasy B (klasy pochodnej) do klasy A, która zawsze zakończy się niepowodzeniem, ponieważ klasa B jest private i tym samym niedostępna. Zmiana dostępu do elementu A spowoduje public rozwiązanie ostrzeżenia.
// C4540.cpp
// compile with: /W1
struct A {
virtual void g() {}
};
struct B : private A {
virtual void g() {}
};
int main() {
B b;
A * ap = dynamic_cast<A*>(&b); // C4540
}