Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Odwołanie do składników klasy MainWindow , Ui namespace

Ostatnio zmodyfikowano 2013-05-26 09:52
Autor Wiadomość
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;

C/C++
#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();
    //Ui::MainWindow.powietrzeList->currentItem();
    //w.MoveItem(w.ui->hangarList, w.ui->lotniskoList);
}

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?

P-83914
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).
P-83921
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:
C/C++
struct CTemp
{
    static int A;
};

int CTemp::A = 5;

printf( "%u\n", CTemp::A ); //Rzekome odwolanie sie


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.
P-83922
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 ; )
P-83926
« 1 »
  Strona 1 z 1