diff --git a/alib2data/src/common/visitor.hpp b/alib2data/src/common/visitor.hpp index 45672c001ce99c3ce375dc6c1d46dc6db82ad357..e7c58f931093112122f85e50717fbeb92e90c9ba 100644 --- a/alib2data/src/common/visitor.hpp +++ b/alib2data/src/common/visitor.hpp @@ -11,6 +11,7 @@ #include <stdexcept> #include <typeindex> +#include <iostream> namespace std { @@ -192,7 +193,7 @@ public: template < typename R > void Visit1 ( void * userData, const T & first, const R & second ) const { if ( std::type_index ( typeid ( T ) ) == std::type_index ( typeid ( second ) ) ) - this->Visit ( userData, first, static_cast < const T & > ( second ) ); + this->Visit ( userData, first, dynamic_cast < const T & > ( second ) ); else throw std::logic_error ( "Same visitor: Visited types are different." ); } @@ -212,7 +213,7 @@ public: template < typename R > void Visit1 ( void * userData, const T & first, const R & second ) const { if ( std::type_index ( typeid ( T ) ) == std::type_index ( typeid ( second ) ) ) - this->Visit ( userData, first, static_cast < const T & > ( second ) ); + this->Visit ( userData, first, dynamic_cast < const T & > ( second ) ); // tady ten dynamic cast muze byt i static cast ale to by to muselo na g++ 5.2 fungovat else throw std::logic_error ( "Same visitor: Visited types are different." ); }