C++ (Qt)class A {..};class B : public A {..};class C : public A {..};...B * b = ..C * c = dynamic_cast <C *> b;// с - нормальный указатель на объект класса С (если он был таким создан)
C++ (Qt)class A{public: int e; virtual void func();};void A::func(){ e=3;} class B: public A{public: double h;}; int main(int argc, char *argv[]){ QCoreApplication a(argc, argv); B* vB = new B; vB->h= 2.345; vB->e=14; A *vA = dynamic_cast<A*> (vB); qDebug() << vA->e; return a.exec();} //Всё ок vA->e=14;
C++ (Qt) A* vA = new A; vA->e = 34; B* vB = dynamic_cast<B*> (vA); //dynamic_cast вернул NULL qDebug() << vB;
C++ (Qt) A * vA = new A(); B* vB = dynamic_cast<B*> (vA); //dynamic_cast вернул NULL vA = new B(); vB = dynamic_cast<B*> (vA); // а теперь уже не NULL
C++ (Qt)vA = new B();vB = dynamic_cast<B*> (vA); // у класса B есть поля которых нет у А, значит в vB.h находится мусор, и также было бы с другими полями если бы они были да?
vA = new B();(vB *)vA->h;
C++ (Qt)class A{public: int e; virtual void func();};void A::func(){ e=3;} class B: public A{public: double h;}; class C: public A{public: int c;};
C++ (Qt) A* vA = new B; vA->e = 34; B* vB = dynamic_cast<B*> (vA); qDebug() << vB->e<<" "<< vB->h<<endl; C* vC = dynamic_cast<C*> (vB); // так NULL :( qDebug() << vC;