Odwołanie do składników klasy MainWindow , Ui namespace
Ostatnio zmodyfikowano 2013-05-26 09:52
maze Temat założony przez niniejszego użytkownika |
Odwołanie do składników klasy MainWindow , Ui namespace » 2013-05-25 22:30:05 Mam stworzoną klasę, z której potrzebuje odwołać się/wywołać funkcje z klasy MainWindow. Zadeklarowałem na początku pliku "extern MainWindow w" jest to obiekt tworzony w pliku main.cpp; #include "mainloop.h" #include "includes.h" #include "mainwindow.h" #include <QTimer>
extern MainWindow w;
MainLoop::MainLoop() { }
void MainLoop::run() { while( 1 ) { if( MainWindow::oczekujace.empty() ) continue; else { QTimer::singleShot( 2000, this, SLOT( Move() ) ); } } }
void MainLoop::Move() { QListWidgetItem * oczekujacy = MainWindow::oczekujace.first(); w.ui->powietrzeList->addItem( oczekujacy ); w.ui->lotniskoList->takeItem( oczekujacy->listWidget()->row( oczekujacy ) ); MainWindow::oczekujace.removeFirst(); }
Z tym, że po tym jak dodaje deklaracje "extern MainWindow w" , kompilator krzyczy na temat "udefined reference to vtable for MainLoop" i tak samo "udefined reference to w". W klasie MainWindow jest przestrzeń nazw Ui, zawierająca deklaracje kalsy MainWindow. W jaki sposób mogę odnieść się do składników klasy MainWindow z poza niej? Klasa MainLoop jest z nią zaprzyjaźniona. No i skąd ten udenfined reference to vtable for MainLoop? Dlaczego pojawia się on po deklaracji extern? |
|
DejaVu |
» 2013-05-25 23:50:29 Nie za bardzo rozumiem o co Ci chodzi, ale... definicja klasy musi być znana w miejscu, w którym chcesz użyć jej pól bądź metod (ale implementacja jej metod już nie musi być znana na etapie użycia metod, tylko na etapie linkowania). |
|
unimator |
» 2013-05-26 00:01:48 W klasie MainWindow jest przestrzeń nazw Ui, zawierająca deklaracje kalsy MainWindow.
|
Co masz przez to na myśli? W jaki sposób mogę odnieść się do składników klasy MainWindow z poza niej?
|
Przykład: struct CTemp { static int A; };
int CTemp::A = 5;
printf( "%u\n", CTemp::A );
No i skąd ten udenfined reference to vtable for MainLoop?
|
Undefined reference znaczy, że próbujesz odwołać się do jakiejś metody (lub funkcji) bez jej wcześniejszej implementacji. Undefined reference to vtable znaczy to samo tylko, że dla metod wirtualnych. Jak wyżej, daj więcej kodu. |
|
maze Temat założony przez niniejszego użytkownika |
» 2013-05-26 09:52:42 Błąd jest na samym początku. Używając QT posługujemy się sygnałami/slotami i nimi kierujemy wywołania odpowiednich funkcji.
reference ->> http://qt-project.org/doc/qt-4.8/signalsandslots.html podstawy ->> https://www.youtube.com/watch?v=JtyCM4BTbYo
Pozdrawiam, i sorry za lamerstwo ; ) |
|
« 1 » |