Seite 1 von 1

[solved] QTemporaryFile compiler error

Verfasst: 1. Mai 2008 11:56
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

Verfasst: 1. Mai 2008 13:04
von dontinelli
Solltest du tmpfile nicht als Pointer deklarieren? (basic c++)

Verfasst: 1. Mai 2008 14:06
von C167
oh, kleiner Tippfehler beim Uebertragen und kuerzen hierher. Es ist natuerlich ein Pointer :)

Verfasst: 1. Mai 2008 20:21
von Christian81
Da keine Zeilennummern - wo ist Zeile 45??

Verfasst: 1. Mai 2008 20:33
von C167
>> tmpfile = new QTemporaryFile ( QString ( "qXXXXXX" ) );

Verfasst: 1. Mai 2008 21:15
von upsala

Code: Alles auswählen

void loaded ( int handle, QByteArray data ) 
C++-Grundlagen, wo ist die Klassen-Angabe?

Verfasst: 2. Mai 2008 11:00
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 :))