[gelöst] was will mir der Compiler sagen?

Alles rund um die Programmierung mit Qt
Antworten
qtNiko
Beiträge: 216
Registriert: 6. April 2007 21:26
Wohnort: München

[gelöst] was will mir der Compiler sagen?

Beitrag von qtNiko »

hi,

ich kann mit einer Compiler-Fehlermeldung nichts anfangen, doch zunächst der Code:

Ich habe folgenden Code in meinem h-File:

Code: Alles auswählen

SimuDesign : public QMainWindow, private Ui::Simu_Qt4
{
	Q_OBJECT
	
	public:
	SimuDesign(QMainWindow *parent=0);
	int readWkspFile(QFile wkFile);  // <--- das ist relevant
    ...	

	private slots:
	void loadWorkspace();
    ...
        private:
         QFile wkspFile;   // <-- darum geht es
Im dazugehörigen cpp-File befinden sich die nötigen functions, z.B.:

Code: Alles auswählen

void SimuDesign::loadWorkspace() {
	  ...
	QString inFName = QFileDialog::getOpenFileName(this, ...); 
	if (!inFName.isEmpty()) {
		wkspFile.setFileName(inFName);
		if (wkspFile.open(QIODevice::ReadOnly | QIODevice::Text)) {
			err = readWkspFile(wkspFile);      // <--- hier kommt die Fehlermeldung!
                        ...
                 }
Der Compiler meldet mir nun im cpp-File:
error: initializing argument 1 of 'int SimuDesign::readWkspFile(QFile)'
error: within this context

In den beiden Zeilen oberhalb der Fehlermeldung wird wkspFile.... akzeptiert. Aber bei der Parameterübergabe an readWkspFile() fehlt eine Initialisierung?

Um Tipps wäre ich sehr dankbar. Ich hänge total.
Zuletzt geändert von qtNiko am 12. Dezember 2007 22:34, insgesamt 1-mal geändert.
Gruß von qtNiko

Core i5 760, GT 240, Suse Linux11.3, Eclipse-CDT-Helios, QT4.4, QT-Integration
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

zu wenig code
erstens fehlt ein 'class' vor deiner Klasse und zweitens sieht man nicht ob du QFile.h inkludiert hast. Ausserdem kann man QFile nicht kopieren -> man muss es als ptr oder Referenz übergeben.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
qtNiko
Beiträge: 216
Registriert: 6. April 2007 21:26
Wohnort: München

Beitrag von qtNiko »

Ausserdem kann man QFile nicht kopieren -> man muss es als ptr oder Referenz übergeben.
Das ist es!
Ich habe es mit Pointer probiert, und da funktioniert es. Mir war nicht klar, warum meine Lösung nicht funktionierte.
Jetzt weiß ich es zwar, aber wo steht so etwas, dass man QFile nicht kopieren kann?

Vielen Dank für den Tipp
Gruß von qtNiko

Core i5 760, GT 240, Suse Linux11.3, Eclipse-CDT-Helios, QT4.4, QT-Integration
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

QFile ist von QObject abgeleitet. Und QObject's sind nunmal nicht kopierbar --> http://doc.trolltech.com/4.2/qobject.html

Wenn du z.B. QFile kopieren könntest hättest du auf einmal zwei QFile-Objekte die auf ein und die gleiche Datei verweisen.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Antworten