[Interest] dynamic_cast failing
René J.V. Bertin
rjvbertin at gmail.com
Sat Apr 11 17:08:45 CEST 2015
Hi,
I have an issue with some KDE4 code (built against Qt 4.8.6) where a
dynamic_cast fails on OS X but not on Linux (be it with gcc or clang
3.5). In a nutshell:
class D: public class C, public class B, public class A;
with C inheriting QObject (ultimately), the others being "root
classes". The failing cast goes like this:
C *part = m_tab[0]
A *a = dynamic_cast<A*>(part);
If m_tab[0] were indeed a class C* the failure would be
understandable, but the code's author tells me it's actually a class
D*.
This is only Qt related insofar as C inherits QObject, but I was
hoping to get some pointers which could help me figure out what goes
wrong here. Does Qt have some mechanism by which I can check the
actual type of the pointer stored in m_tab[0] (evidently
typeid(part).name() will tell me it's a class C) or even if it's an
invalid pointer? Running through valgrind didn't teach me anything.
Would the debugger in Qt Creator allow me to follow what happens
during that dynamic_cast?
Thanks,
R
More information about the Interest
mailing list