[solved] QTemporaryFile compiler error

Alles rund um die Programmierung mit Qt
Antworten
C167
Beiträge: 105
Registriert: 9. Februar 2008 20:30

[solved] QTemporaryFile compiler error

Beitrag von C167 »

Hi, ich versuche gerade, ein QTemporaryFile-Objekt zu erzeugen und stosse da auf ein Problem. g++ 4.3, Qt 4.4rc1
An sich sieht das so aus:
Header:

Code: Alles auswählen

#ifndef PROGRAMLAUNCHER_H
#define PROGRAMLAUNCHER_H

#include <QObject>
#include <QProcess>
#include <QTemporaryFile>
class ProgramLauncher : public QObject
{
		Q_OBJECT
	public:
		ProgramLauncher ( QObject *parent = 0 );
		~ProgramLauncher();
	public slots:
		loaded ( int handle, QByteArray data );
	private:
		BinaryLoader *loader
		QTemporaryFile tmpfile;
};
#endif
und die cpp-Datei:

Code: Alles auswählen

#include "ProgramLauncher.h"
#include <QByteArray>
#include <QDebug>

ProgramLauncher::ProgramLauncher ( QObject *parent )
		: QObject ( parent )
{
	loader = new BinaryLoader ( );
	connect ( loader, SIGNAL ( binaryLoaded ( int, QByteArray ) ), this, SLOT ( loaded ( int, QByteArray ) ) );
}

void loaded ( int handle, QByteArray data )
{
	qDebug() << handle;
	Q_UNUSED ( data );
	tmpfile = new QTemporaryFile ( QString ( "qXXXXXX" ) );
}

ProgramLauncher::~ProgramLauncher()
{
}
Wenn ich das so mache, bekomme ich vom Compiler folgende Fehlermeldung:
g++ hat geschrieben:ProgramLauncher.cpp:45: error: assignment of function 'FILE* tmpfile()'
ProgramLauncher.cpp:45: error: cannot convert 'QTemporaryFile*' to 'FILE* ()()' in assignment
Wenn ich nun aber die Erzeugung des Objekts direkt im Slot mache, also nciht in der Header-Datei, geht es. Wenn ich es im Header mache, nimmt er auch (entgegen der Dokumentation) auch keinen this-pointer an:
g++ hat geschrieben:ProgramLauncher.cpp:45: error: invalid use of 'this' in non-member function
Ich steh auf dem Schlauch, aber notfalls lege ich das Ding auch erst beim Aufruf des Slots an...
C167
Zuletzt geändert von C167 am 2. Mai 2008 11:00, insgesamt 1-mal geändert.
dontinelli
Beiträge: 146
Registriert: 22. September 2006 20:53

Beitrag von dontinelli »

Solltest du tmpfile nicht als Pointer deklarieren? (basic c++)
C167
Beiträge: 105
Registriert: 9. Februar 2008 20:30

Beitrag von C167 »

oh, kleiner Tippfehler beim Uebertragen und kuerzen hierher. Es ist natuerlich ein Pointer :)
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Da keine Zeilennummern - wo ist Zeile 45??
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
C167
Beiträge: 105
Registriert: 9. Februar 2008 20:30

Beitrag von C167 »

>> tmpfile = new QTemporaryFile ( QString ( "qXXXXXX" ) );
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Code: Alles auswählen

void loaded ( int handle, QByteArray data ) 
C++-Grundlagen, wo ist die Klassen-Angabe?
C167
Beiträge: 105
Registriert: 9. Februar 2008 20:30

Beitrag von C167 »

aehhhhm verdammt... und nciht nur das ist falsch, ich versuche grade nen Signal zu implementieren. Ach ne, da hab ich wirklich nen gewaltigen Haenger gehabt! Danke fuer den Hinweis, geht wie ne eins (zum. vom Compiler her :))
Antworten