diff --git a/src/lib/eolian_cxx/grammar/base_class_definition.hpp b/src/lib/eolian_cxx/grammar/base_class_definition.hpp index aa61334020..d5fa914b53 100644 --- a/src/lib/eolian_cxx/grammar/base_class_definition.hpp +++ b/src/lib/eolian_cxx/grammar/base_class_definition.hpp @@ -64,10 +64,11 @@ struct base_class_definition_generator return false; if(!as_generator(";\n" << scope_tab << "}\n").generate(sink, attributes::unused, context)) return false; - if(!as_generator - ( - scope_tab << "Eo* _eo_ptr() const { return *(Eo**)this; }\n" - ).generate(sink, attributes::unused, context)) return false; + if(!as_generator( + scope_tab << "Eo* _eo_ptr() const { return *(reinterpret_cast" + << "(const_cast<" << string << " *>(this))); }\n" + ).generate(sink, cls.cxx_name, context)) + return false; // operator ::ns::Class_Name() const; // operator ::ns::Class_Name&(); diff --git a/src/lib/eolian_cxx/grammar/class_definition.hpp b/src/lib/eolian_cxx/grammar/class_definition.hpp index 1e21336d9f..30a9daf134 100644 --- a/src/lib/eolian_cxx/grammar/class_definition.hpp +++ b/src/lib/eolian_cxx/grammar/class_definition.hpp @@ -128,10 +128,11 @@ struct class_definition_generator return false; if(!as_generator(";\n" << scope_tab << "}\n").generate(sink, attributes::unused, context)) return false; - if(!as_generator - ( - scope_tab << "Eo* _eo_ptr() const { return *(Eo**)this; }\n" - ).generate(sink, attributes::unused, context)) return false; + if(!as_generator( + scope_tab << "Eo* _eo_ptr() const { return *(reinterpret_cast" + << "(const_cast<" << string << " *>(this))); }\n" + ).generate(sink, cls.cxx_name, context)) + return false; for (auto&& e : cls.events) {