std::shared_ptr
Ostatnio zmodyfikowano 2017-04-13 16:46
marcolo2307 Temat założony przez niniejszego użytkownika |
std::shared_ptr » 2017-04-13 15:33:11 Cześć! Korzystam z TGUI (GUI dla SFML2). Gdy próbuję załadować widget z tgui::Theme, za pomocą metody load, występuje problem w metodzie readFile. Rzucany jest tam wyjątek, który informuje o błędnej nazwie pliku, nie mogę go złapać nawet za pomocą catch (...). Prawdopodobnie rzucane są 2 wyjątki, debugger pokazuje mi, że jakiś jest rzucany w linijce z }. Kod pochodzi z pliku shared_ptr_base.h z biblioteki standardowej. _Tp * operator ->() const noexcept { _GLIBCXX_DEBUG_ASSERT( _M_ptr != 0 ); return _M_ptr; } Mój kod: tgui::Theme::Ptr theme = std::make_shared < tgui::Theme >( "x.txt" );
try { tgui::Button::Ptr button = theme->load( "Button" ); } catch(...) { } Implementacja ładowania tgui::Theme: https://github.com/texus/TGUI/blob/master/src/TGUI/Loading/ThemeLoader.cpp. |
|
DejaVu |
» 2017-04-13 16:16:59 Wejdź debuggerem w źródła i znajdź konkretną linijkę, która powoduje rzucenie wyjątku. To jest najkrótsza droga pod warunkiem, że masz symbole debugowe do bibliotek, których używasz. |
|
marcolo2307 Temat założony przez niniejszego użytkownika |
» 2017-04-13 16:46:00 Wyjątek jest rzucany na końcu tej funkcji od shared_ptr. Na nim debugger się zatrzymuje i wyłącza. Kolejny wyjątek w teorii powinien być w metodzie readFile i on pokazuje się przy zwykłym crashu, bez debuggera.
Nie mogę wejść w źródła TGUI, ale wyjątek z tym opisem jest tylko w jednym miejscu.
Nawet kiedy tgui::Theme nie jest shared_ptr tylko zwykłą zmienną lokalną (niezgodnie z zaleceniami TGUI) to nie mogę złapać tego wyjątku.
Przykład jest taki jak w dokumentacji, może znalazłem bug...
Sprawdziłem kod z dokumentacji, jest ten sam problem. Najwyraźniej muszę czekać na nowszą wersję. |
|
« 1 » |