Seite 1 von 1

[Sloved]QList als Funktionsrückgabe

Verfasst: 16. April 2008 09:47
von jd
Hallo Gemeinde, ich habe ein Problem, mit einem "selbst definierten" Rückgabewert. Das Problem wird sich vermutlich auf C++ belaufen und nicht direkt auf Qt, aber eventuell kann mir trotzdem einer helfen.

Header

Code: Alles auswählen

class CDiskSpace : public QObject{
	public:
		CDiskSpace();
		~CDiskSpace();

		typedef struct {
			QString filesystem;
			QString size;
			QString available;
			QString used;
			QString usedPercent;
			QString mountPoint;
		} SHardDrive;

		QList<SHardDrive*> disk;
		SHardDrive *hdd;

		QList<SHardDrive*> parseMountPoints( QString data );
};
Source

Code: Alles auswählen

QList<SHardDrive*> CDiskSpace::parseMountPoints( QString data ) {
    hdd = new SHardDrive;
    disk.append(hdd);
    return disk;
}
Mein Compiler gibt auch Fehlermeldungen aus, die ich leider nicht verstehe.
src/diskspace/diskspace.cpp:26: error: ‘SHardDrive’ was not declared in this scope
src/diskspace/diskspace.cpp:26: error: template argument 1 is invalid
src/diskspace/diskspace.cpp:26: error: prototype for ‘int CDiskSpace::parseMountPoints(QString)’ does not match any in class ‘CDiskSpace’
src/diskspace/diskspace.h:23: error: candidate is: QList<CDiskSpace::SHardDrive*> CDiskSpace::parseMountPoints(QString)
src/diskspace/diskspace.cpp:26: error: ‘int CDiskSpace::parseMountPoints(QString)’ cannot be overloaded
src/diskspace/diskspace.h:23: error: with ‘QList<CDiskSpace::SHardDrive*> CDiskSpace::parseMountPoints(QString)’
src/diskspace/diskspace.cpp: In member function ‘int CDiskSpace::parseMountPoints(QString)’:
src/diskspace/diskspace.cpp:30: error: cannot convert ‘QList<CDiskSpace::SHardDrive*>’ to ‘int’ in return
src/diskspace/diskspace.cpp: At global scope:
Hat da jemand eine Idee wie ich den Fehler beheben könnte? Liegt das an meiner Struktur, oder ist das ein QList Problem, oder übersehe ich da einfach nur einen wichtigen Aspekt?

so long

jd

Verfasst: 16. April 2008 09:54
von Christian81
Was ist an

Code: Alles auswählen

src/diskspace/diskspace.cpp:26: error: prototype for ‘int CDiskSpace::parseMountPoints(QString)’ does not match any in class ‘CDiskSpace’ 
nicht zu verstehen?

Verfasst: 16. April 2008 10:02
von jd
Die Funktion int CDiskSpace::parseMountPoints(QString) gibt es nicht und sollte es auch nicht geben. Ich verstehe die Fehlermeldung nicht weil ich nicht weiß wie der Compiler auf int CDiskSpace::parseMountPoints(QString) kommt.

Verfasst: 16. April 2008 10:06
von Christian81
Du bist an der Stelle nicht im CHardDrive - Namespace, also auch kein SHardDrive. Auch das sagt Dir der Compiler - gleich als erstes.

Verfasst: 16. April 2008 10:17
von jd
Ok, das verstehe ich, ich habe die Header-Datei umgeschrieben:

Header:

Code: Alles auswählen

typedef struct {
	QString filesystem;
	QString size;
	QString available;
	QString used;
	QString usedPercent;
	QString mountPoint;
} SHardDrive;

class CDiskSpace : public QObject{
	public:
		CDiskSpace();
		~CDiskSpace();

		QList<SHardDrive*> disk;
		SHardDrive *hdd;
		QList<SHardDrive*> parseMountPoints( QString data );
};
Das funktioniert auch, jedoch habe ich die Struktur nun global gemacht, ist das die ein zigste Möglichkeit?

Verfasst: 16. April 2008 10:22
von Christian81
Nein, das ist nicht die einzigste Möglichkeit.

Was mache ich wenn der Namespace gerade nicht aktiv ist, ich aber trotzdem drauf zugreifen will? Das ist basic c++ und hat nichts mit Qt zu tun :(

CDiskSpace::SHardDrive

Verfasst: 16. April 2008 10:28
von jd
Aber natürlich, tut mir Leid die letzte Frage war überflüssig... Hänge einfach schon zu lange davor...