Moin zusammen,
ich habe ein Problem mit einem Programm und ich komme einfach nicht darauf, warum es nun nicht mehr funktioniert. Ich habe einige Änderungen daran vorgenommen, sehe aber nicht, aus welchem Grund es nun fehlerhaft ist.
Hier mal etwas Code:
script.h:
Es handelt sich hier um den Header einer Klasse, die Funktionen werden von Lua aus aufgerufen, das ist aber für das Problem unerheblich.
getMW(); wird in mainwindow.h definiert:
mainwindow.cpp:
Nun habe erhalte ich folgende Fehlermeldungen:
Ich habe den Code wie gesagt früher erfolgreich compilieren können, auch damals hatte ich schon diese statischen Funktionen und getMW().
Ich frage mich aber, was hier der Fehler ist. Ich habe schon einige Zeit darauf verwendet ihn zu finden - erfolglos.
Vielleicht weiß ja jemand weiter.
Vielen Dank.
Gruß,
badday
ich habe ein Problem mit einem Programm und ich komme einfach nicht darauf, warum es nun nicht mehr funktioniert. Ich habe einige Änderungen daran vorgenommen, sehe aber nicht, aus welchem Grund es nun fehlerhaft ist.
Hier mal etwas Code:
script.h:
Code:
#include "mainwindow.h"
//...
class MainWindow; //forward declaration
class Script
{
//...
private:
//...
static int l_pushButton ( lua_State *L)
{
QString label = lua_tostring(L, 1);
int column = lua_tonumber(L, 2);
int row = lua_tonumber(L, 3);
MainWindow *temp = MainWindow::getMW();
temp->newGrapic(1, label, row, column);
return 0;
}
static int l_lineEdit ( lua_State *L)
{
QString label = lua_tostring(L, 1);
int column = lua_tonumber(L, 2);
int row = lua_tonumber(L, 3);
MainWindow *temp = MainWindow::getMW();
temp->newGrapic(2, label, row, column);
return 0;
}
//...
getMW(); wird in mainwindow.h definiert:
Code:
#include "script.h"
//...
class MainWindow : public QMainWindow {
Q_OBJECT
public:
//...
void newGrapic(int, QString, int, int);
static MainWindow *getMW () {return toMW;}
//...
private:
static MainWindow *toMW;
//...
};
mainwindow.cpp:
Code:
#include "mainwindow.h"
//...
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
toMW=this;
}
Nun habe erhalte ich folgende Fehlermeldungen:
In file included from mainwindow.h:10,
from main.cpp:3:
script.h: In static member function »static int Script::l_pushButton(lua_State*)«:
script.h:60: Fehler: incomplete type »MainWindow« used in nested name specifier
script.h:61: Fehler: invalid use of incomplete type »struct MainWindow«
script.h:14: Fehler: forward declaration of »struct MainWindow«
script.h: In static member function »static int Script::l_lineEdit(lua_State*)«:
script.h:72: Fehler: incomplete type »MainWindow« used in nested name specifier
script.h:73: Fehler: invalid use of incomplete type »struct MainWindow«
script.h:14: Fehler: forward declaration of »struct MainWindow«
make: *** [main.o] Fehler 1
Ich habe den Code wie gesagt früher erfolgreich compilieren können, auch damals hatte ich schon diese statischen Funktionen und getMW().
Ich frage mich aber, was hier der Fehler ist. Ich habe schon einige Zeit darauf verwendet ihn zu finden - erfolglos.
Vielleicht weiß ja jemand weiter.
Vielen Dank.
Gruß,
badday