Zwei unerschiedliche Arten das Mainwindow zu starten

Du bist neu in der Welt von C++? Dann schau hier herein!
Antworten
sacrif
Beiträge: 40
Registriert: 22. Januar 2010 18:52

Zwei unerschiedliche Arten das Mainwindow zu starten

Beitrag von sacrif »

Hi,

ich habe in meinem main.cpp file versucht dass mainwindow wie folgt zu starten:

Code: Alles auswählen

int main(int argc, char *argv[])
{
	QApplication a(argc, argv);
	MainWindow mainwindow();
mainwindow.resize(800,600);
	mainwindow.show();
	return a.exec();
}
Dabei kommen die folgende Fehlermeldungen:
1>..\main.cpp(44) : error C2228: left of '.resize' must have class/struct/union
1>..\main.cpp(45) : error C2228: left of '.show' must have class/struct/union

Wenn ich aber wie folgt starte geht alles startet das Programm ohne Probleme:

Code: Alles auswählen

int main(int argc, char *argv[])
{
	QApplication a(argc, argv);
	MainWindow* mainwindow = new MainWindow();
	mainwindow->resize(800,600);
	mainwindow->show(); 
	return a.exec();
}

Gibts einen speziellen Grund warum das über pointer funktioniert aber nicht ohne. Das kann doch normal nicht sein oder? Hoffe ich überseh hier nicht was ganz dummes :) Das blöde mit dem pointer ist nur dass ich das Objekt dann ja nach dem return nicht mehr selbst destruieren kann - darum wäre die version ohne pointer besser.

Danke für eure Hilfe & lg scr
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Re: Zwei unerschiedliche Arten das Mainwindow zu starten

Beitrag von franzf »

Code: Alles auswählen

MainWindow mainwindow();
ist eine lokale Funktionsdeklaration, und nicht wie du denkst eine Instantiierung. Lass die Klammern weg und alles wird gut :)

Code: Alles auswählen

MainWindow mainwindow;
Wenn du Parameter übergeben willst, brauchst du natürlich wieder Klammern.
Bei new ist dem Compiler klar, dass es sich um eine Instantiierung handelt (ich bin nicht Standardfirm, gehe aber davon aus, dass es exakte Vorgaben seitens des Standardisierungskomitees gibt, wie was genau zu handhaben ist :)).

Hat aber nix mit Qt zu tun, deshalb -> move "C++ Grundlagen".
sacrif
Beiträge: 40
Registriert: 22. Januar 2010 18:52

Beitrag von sacrif »

ahhhh.... vielen dank, jetzt funktioniert alles einwandfrei :)

lg
Antworten