20.04.2017, 19:09, "Igor Mironchik" <igor.mironc...@gmail.com>: > 20.04.2017 18:22, Thiago Macieira пишет: >> Em quarta-feira, 19 de abril de 2017, às 22:56:46 PDT, Igor Mironchik >> escreveu: >>> class Channel >>> >>> : public QObject >>> >>> {}; >>> void mySlot() >>> { >>> Channel * ch = qobject_cast< Channel* > ( sender() ); >>> // You are 100% sure that sender() is Channel!!! >>> // And this cast will fail!!! >>> } >> And so will dynamic_cast fail. >> >> Fix it by adding a non-inline virtual destructor to Channel. > > QObject has virtual destructor... dynamic_cast will work. But it doesn't > matter, the problem was in another...
If your class has virtual functions or derives from such base class, and have inline (or default) virtual destructor,its v-table will be emitted in each translation unit. This is undesirable and can lead to subtle problems. See e.g. http://llvm.org/docs/CodingStandards.html#provide-a-virtual-method-anchor-for-classes-in-headers -- Regards, Konstantin _______________________________________________ Interest mailing list Interest@qt-project.org http://lists.qt-project.org/mailman/listinfo/interest