Seite 1 von 2
error: http; was not declared in this scope
Verfasst: 26. November 2006 01:38
von joebar
Hi,
habe folgendes
Code: Alles auswählen
#include "testapp.h"
#include <QtGui>
#include <QtCore>
#include <QHttp>
TestApp::TestApp(QDialog *parent) : QDialog(parent)
{
setupUi(this);
connect(okButton, SIGNAL (clicked()), this, SLOT(slotClose()));
http = new QHttp(this);
}
TestApp::~TestApp()
{}
void TestApp::slotClose()
{
accept();
}
Das mit http = new... habe ich dem Qt Tutorial entnommen
http://doc.trolltech.com/4.1/network-ht ... w-cpp.html
Im pro File habe ich natuerlich QT +=network angegeben fuers include
Danke,
J.
Verfasst: 26. November 2006 08:37
von upsala
Wo ist deine Frage?
Verfasst: 26. November 2006 17:22
von joebar
Die Frage ist was muss ich machen um den Fehler zu beseitigen? Warum kennt er http nicht in dem Scope? Ich will das Object http hier doch anlegen, und qhttp sollte bekannt sein (aber darueber beschwert er sich ja auch nicht)
Verfasst: 26. November 2006 17:43
von Christian81
qmake vergessen aufzurufen nachdem Du QT += network eingefügt hast.
Verfasst: 26. November 2006 19:25
von joebar
Nein, qmake habe ich ausgefuehrt
Verfasst: 26. November 2006 19:48
von Christian81
Dann probiere es doch z.B. einfach mal mit qt-4-src\examples\tutorial\t1 aus. Habe dort gerade QT += network in die pro-Datei und #include <QHttp> im source eingefügt und es klappt ohne Probleme.
Verfasst: 26. November 2006 22:05
von joebar
Gleiche Problem, vom t1 Tutorial habe ich nun folgendes
main.cpp
Code: Alles auswählen
#include <QApplication>
#include <QPushButton>
#include <QHttp>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
http = new QHttp(this);
QPushButton hello("Hello world!");
hello.resize(100, 30);
hello.show();
return app.exec();
}
pro File
Code: Alles auswählen
######################################################################
# Automatically generated by qmake (2.00a) Mon Nov 27 05:02:39 2006
######################################################################
TEMPLATE = app
TARGET +=
DEPENDPATH += .
INCLUDEPATH += .
QT += network
# Input
SOURCES += main.cpp
Eine Idee?
Danke,
J.
Verfasst: 26. November 2006 22:14
von upsala
So, jetzt setzen wir uns hin, lernen noch einmal ein bißchen C++-Grundlagen, schauen uns in aller Ruhe nocheinmal die Fehlermeldungen an und bessern dann selbstständig den Fehler aus...
Verfasst: 27. November 2006 01:17
von joebar
Ok, habe den bloeden Fehler gefunden. Trotzdem sei angemerkt, dass es nicht immer - auch hier - nicht gerechtfertig ist erstmal anzunehmen man haette nichts gelesen, gegoogelt oder was auch immer. Sei der Fehler auch noch so bloed.
funktioniert. Habe aber noch eine Frage - ich weiss muesste ich eigentlich auch wissen, tue ich aber nicht, warum muss ich das this in diesem Falle weg lassen? Ich stehe mit dem this etwas auf Kriegsfuss, in meinem C++ Buch sind die Beispiele dazu etwas trivial. Kann mir das jemand an dem obigen Beispiel erklaeren? Bisher verfahre ich nach der Methode es immer mal mit und ohne this zu probieren
Im t1 Tutorial funktionierts nur ohne "this", in meiner testapp auch mit.
Danke,
J.
Verfasst: 27. November 2006 17:59
von upsala
Wo willst du this weglassen? Zeig uns mal ein paar Beispiele und wir können darüber reden...
Verfasst: 27. November 2006 18:18
von joebar
Verfasst: 27. November 2006 18:36
von upsala
Dazu solltest du dich noch mal genauer mit QObject bzw. mit der Objecthierachie beschäftigen.
Wenn du als parent this angibst, dann wird sich das Parent-Objekt (nämlich 'this') um das zerstören vom Object kümmern. Dies kann aber auch nur funktionieren wenn du deine Objekte per new erzeugst, da du ansonsten die Objekte vom Stack löschen läßt, was in den meisten Fällen zum Absturz führt.
Beim weglassen vom 'this' wirst du dich selbst um das löschen deiner Objekte kümmern müssen.
Wobei du im übrigen nicht immer nur 'this' als Parent angeben mußt, du kannst auch andere QObjects als Parent angeben, in Abhängigkeit davon wer sich um das aufräumen kümmern soll.
Verfasst: 27. November 2006 21:43
von joebar
Okay, das wuerde aber bedeuten, dass ich immer beide Varianten zumindest compelieren kann. Wobei das bei mir nicht immer klappt.
Hoere ich bei dir die Empfehlung raus besser immer "this" zu benutzen - anstatt kein parent anzugeben?
Mir ist diese Stelle bei dir nicht ganz klar: "...da du ansonsten die Objekte vom Stack löschen läßt, was in den meisten Fällen zum Absturz führt. .." In welchem Fall loesche ich Objekte vom Stack? Es hoert sich so an also ob das schon beim anlegen der Objekte passiert.
Danke,
J.
Verfasst: 27. November 2006 22:00
von upsala
http wird auf dem Stack abgelegt, d. h. ab Ende der Funktion ist es nur noch eine Frage der Zeit bis das Programm abstürzt.
Verfasst: 28. November 2006 03:28
von joebar
und wo wirds bei der "new" version abgelegt?
Danke,
J.