Seite 1 von 1

invalid use of 'this' in non-member func

Verfasst: 11. Februar 2007 16:09
von sea_bear
Moin moin!
Ich versuche im Hauptprogramm

Code: Alles auswählen

int main(int argc, char *argv[])
{
 QApplication app(argc, argv);
...
eine MessageBox anzeigen zu lassen.
Der Code sieht ungefähr so aus:

Code: Alles auswählen

...
QMessageBox::warning(this, ...
...
Leider bekomme ich immer die Fehlermeldung: invalid use of ‘this’ in non-member function

Was mache ich falsch, bzw. wie mache ich es richtig??

mfg
Tobias

Verfasst: 11. Februar 2007 16:12
von franzf
Die Meldung sagt doch schon alles:
int main() ist keine Member-Funktion einer Klasse ;)
Daher kann this auch auf kein Objekt zeigen.
Nimm einfach mal 0. Vllt gehts dann ;)

Grüße
Franz

Verfasst: 11. Februar 2007 16:19
von sea_bear
franzf hat geschrieben: Nimm einfach mal 0. Vllt gehts dann ;)

Grüße
Franz
wie sieht das als Code aus??


Tobias

Verfasst: 11. Februar 2007 17:04
von upsala

Verfasst: 11. Februar 2007 17:42
von sea_bear
upsala hat geschrieben:
Danke!!!! :-)

Jetzt muss mir nur noch jemand erklären, warum ich mal und mal nehmen kann / muss!!

Tobias

Verfasst: 11. Februar 2007 17:56
von upsala
Du mußt gar nichts, du kannst jetzt immer statt this 0 verwenden. Das Ergebnis siehst du meist recht schnell. Ansonsten könntest du noch die Dokumentation zu QObject bzw. QWidget lesen. Dort ist der Parameter parent erklärt...

Verfasst: 11. Februar 2007 18:51
von Christian81
sea_bear hat geschrieben: Jetzt muss mir nur noch jemand erklären, warum ich mal und mal nehmen kann / muss!!
Ich würde sagen Du beschäftigst Dich mal mit einem C++ - Buch. Das hier ist ein Forum für Qt und nicht für C++-Anfänger. Sorry.

Verfasst: 11. Februar 2007 19:46
von franzf
Christian81 hat geschrieben:Ich würde sagen Du beschäftigst Dich mal mit einem C++ - Buch. Das hier ist ein Forum für Qt und nicht für C++-Anfänger. Sorry.
Ich kann nur sagen:

Code: Alles auswählen

using namespace std;
:D
Auch wenn es nicht korrektes C++ ist sondern nur im übertragenen Sinne passt ;)

Verfasst: 11. Februar 2007 23:19
von webmaster1987
Also der Pointer this zeigt ja nur auf die Speicheradresse der aktuellen Klasse hat also relativ wenig mit 0 zu tun^^.

Das einzige was mit 0 gleichzusetzen ist ist NULL. NULL ist die Adresse des Ersten Speicherbereiches des Arbeitsspeichers, den wiederum kann man nicht überschreiben und deshalb ist NULL und 0 als Speicheradresse das gleiche.