Thanks a lot Steve,
The Mesh is selected by the user. so is not constructed as a Seat. The plugin receive as a input the mesh. but as Is explained in the post linked above is a bad design for a class.
My error is: I can not assume that all meshes are going to be seats. in other words: I can’t cast an instance of the base type to the derived type.
I will resolve the problem with a method to takes a Mesh as argument and construct a seat from there.