diff --git a/example/layers/ui_layer_double/ui_layer_double.cpp b/example/layers/ui_layer_double/ui_layer_double.cpp index 37b44d2..b38e833 100755 --- a/example/layers/ui_layer_double/ui_layer_double.cpp +++ b/example/layers/ui_layer_double/ui_layer_double.cpp @@ -27,6 +27,8 @@ namespace example VE_PUSH_FONT(REGULAR, 20); if (ImGui::Button("Test signal_double", ImVec2(128, 130))) VE::EMIT(test_event::TEST_EVEN, std::string("test event message ui_layer_double")); + + if (ImGui::Button("Test on_detach", ImVec2(128, 130))) on_detach(); VE_POP_FONT(); ImGui::End(); diff --git a/src/event/event_manager.hpp b/src/event/event_manager.hpp index 028f980..6eebe2d 100755 --- a/src/event/event_manager.hpp +++ b/src/event/event_manager.hpp @@ -26,17 +26,15 @@ namespace VE event_handler handler; handler.m_func = std::bind(method, obj, std::placeholders::_1); handler.m_obj = obj; - handler.m_func_ptr = reinterpret_cast(&method); m_funcs.push_back(handler); } template void disconnect(T* obj, void (T::*method)(event)) { - auto func_ptr = reinterpret_cast(&method); m_funcs.erase(std::remove_if(m_funcs.begin(), m_funcs.end(), - [obj, func_ptr](const event_handler& handler) { - return handler.m_obj == obj && handler.m_func_ptr == func_ptr; + [obj](const event_handler& handler) { + return handler.m_obj == obj; }), m_funcs.end() );