[c++] Małe zdumienie przy kompilacji przykładowego kodu.
Ostatnio zmodyfikowano 2013-11-26 07:54
f651144 Temat założony przez niniejszego użytkownika |
[c++] Małe zdumienie przy kompilacji przykładowego kodu. » 2013-11-25 21:50:39 Mała zagadka. Na chwilę obecną nie potrafię sobie z tym poradzić (szczerze mówiąc, to nie mam na to za dużo czasu), ale do rzeczy! Oto kod: #include <iostream> #include <exception>
struct ooops : std::exception { const char * what() const noexcept { return "Ooops!\n"; } };
int main() { try { throw ooops; } catch( std::exception & ex ) { std::cout << ex.what(); } return 0; }
Powyższy kod nie działa. Komunikat błędu: |11|error: expected primary-expression before ';' token| I teraz najlepsze: to jest przykładowy kod wykorzystania std::exception ze strony cplusplus.com. Dlaczego mój szanowny kompilator (MinGW, kompiluje w standardzie c++11) nie dopuszcza konstrukcji "return NowyObiek"? To jest coś nie zgodnego ze standardem? Przysiągłbym, że wszystko jest ok. Oczywiście taki kod działa bez zarzutu: #include <iostream> #include <exception>
struct ooops : std::exception { const char * what() const noexcept { return "Ooops!\n"; } };
int main() { try { ooops o; throw o; } catch( std::exception & ex ) { std::cout << ex.what(); } return 0; }
Dlaczego? Z góry dziękuje za wszelką pomoc. |
|
pekfos |
» 2013-11-25 22:10:58 |
|
Wiesiek |
» 2013-11-26 07:54:38 oops jest nazwą typu zmiennej. Rzucając wyjątek używamy zmiennej, a nie typu. |
|
« 1 » |