• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Wyjątek bad_cast, metoda what().

0 głosów
186 wizyt
pytanie zadane 5 maja 2020 w C i C++ przez amtrax Dyskutant (9,630 p.)

Cześć,

Mam 3 klasy dziedziczące po sobie w następujący sposób. 

class pracownik
{...}
class kelner : public pracownik
{...}
clas host : public kelner

 

Ćwiczę stosowanie wyjątków i mechanizmów RTTI.

Funkcja get() losuje typ obiektu i przypisuje go do wskaźnika, wskaźnik następnie przypisywany jest do referencji.
 

Potem program w bloku try próbuje rzutować typ wylosowanego obiektu do typu kelner. 
Jeśli jest to możliwe nie zgłasza błędu, jeżeli operator dynamic_cast nie pozwala przypisać obiektu, program przechodzi do bloku catch. 
Moje pytanie, dlaczego nie musiałem użyć tutaj instrukcji throw(), skąd program wie, do którego bloku catch ma przejść? 

Dlaczego metoda what() wywołana dla obiektu a nic nie wyświetla?



for (int i = 0; i < 5; i++)
{
   try {
    p = get();   //funkcja losuje typ obiektu
    pracownik & a = *p; //przypisanie do referencji 
     cout << "Typ obiektu to: "<<typeid(a).name(); // nazwa obiektu, który jest obsługiwany
     cout<<endl;
    kelner & rs = dynamic_cast<kelner &>(a); //próba rzutowania 
   }

catch (bad_cast & a){

        a.what(); //dlaczego tutaj nie wyświetla się treść wyjątku?
        continue;

    }

}

Pozdrowienia 

1
komentarz 5 maja 2020 przez tkz Nałogowiec (42,040 p.)

A wiesz co robi metoda what()? http://www.cplusplus.com/reference/exception/exception/what/ zobacz co zwraca.

komentarz 5 maja 2020 przez amtrax Dyskutant (9,630 p.)
@tkz

Taak, dzięki, zabrałko std:cout

:D
komentarz 5 maja 2020 przez tkz Nałogowiec (42,040 p.)

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
2 odpowiedzi 1,155 wizyt
pytanie zadane 18 kwietnia 2020 w C i C++ przez Bartosz Paterek Początkujący (410 p.)
0 głosów
2 odpowiedzi 339 wizyt
pytanie zadane 15 października 2019 w C i C++ przez Karpik Użytkownik (680 p.)
+1 głos
1 odpowiedź 391 wizyt

93,607 zapytań

142,529 odpowiedzi

322,999 komentarzy

63,098 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Kursy INF.02 i INF.03
...