c++ qt deklaracja obiektu w klasie nadrzednej klasy podrzednej zasięg widoczność
Ostatnio zmodyfikowano 2016-04-28 18:20
michal11 |
» 2016-04-28 02:04:59 Podejrzewam, że QDebug() jest singletonem ew. zwraca jakąś zmienną globalną (podobnie do cin/cout). |
|
alien1983 Temat założony przez niniejszego użytkownika |
» 2016-04-28 18:20:26 Poprawiona wersja z dziedziczeniem działa bez błędów. a.h #ifndef A_H #define A_H #include <iostream> #include <QObject> #include <QtCore/QDebug>
class C; class B; class A : public QObject { public: A(); C * cobject; B * bobject; test(); test2(); testB(); };
#endif
b.h #ifndef B_H #define B_H #include "a.h"
class B : public A { public: B(); test(); OK(); };
#endif
c.h #ifndef C_H #define C_H #include "a.h"
class C : public A { public: C(); test(); };
#endif
a.cpp #include "a.h" #include "b.h" #include "c.h" A::A() { }
A::test() { B bobject; C cobject; bobject.OK(); qDebug() << "metoda klasy A Rodzic"; }
A::test2() { qDebug() << "Lulan"; }
A::testB() { }
b.cpp #include "a.h" #include "b.h" #include "c.h"
B::B() : A() { }
B::test() { qDebug() << "metoda klasy B Potomek A"; }
B::OK() { cobject->test(); qDebug() << "OK"; }
c.cpp #include "c.h" #include "b.h" #include "a.h"
C::C() : A() { }
C::test() { qDebug() << "metoda klasy C Potomek A"; bobject->test(); }
main.cpp #include <QCoreApplication> #include "a.h" int main( int argc, char * argv[] ) { QCoreApplication a( argc, argv ); A aObject; aObject.test(); return a.exec(); }
w klasie main tworzony jest obiekt klasy A w klasie A obiekty klas B i C (potomki klasy A) z obiektu klasy A wywołuję metodę obiektu klasy B metoda obiektu klasy B wywołuje metodę z obiektu klasy C metoda klasy C wywołuje inną metodę z klasy B niż była wywołana metoda z klasy C byle tylko nie zapętlić. |
|
1 2 « 3 » |