Seite 1 von 1

[gelöst] Standardwert für Parameter

Verfasst: 8. Mai 2009 17:28
von Label
Hello World!

Ich habe ein Problem mit einem Standardwert für einen Parameter.
Es kann sein, dass das eher ein allgemeines C++ - Verständnisproblem ist, aber trotzdem:

ich möchte eine Funktion schreiben:

Code: Alles auswählen

bool searchPath(const QString &path, QDir& directory = NULL);
aber der Compiler möchte nicht, dass der Parameter QDir& directory einen Standardwert besitzt. Ich habe schon eininge Werte ausprobiert, wie z.B. NULL, 0, QDir, QDir(), QDir(QDir::rootPath()), QDir::rootPath etc. pp.

Die Fehlermeldung ist recht simpel:
Fehler: Standardargument für Parameter des Typs »QDir&« hat Typ »QDir«
oder
Fehler: Standardargument für Parameter des Typs »QDir&« hat Typ »QString«
oder
Fehler: Standardargument für Parameter des Typs »QDir&« hat Typ »int«
je nachdem, was ich für einen Standardwert versuche.

Ich denke ich mache hier etwas grundsätzlich falsch, und bin mir ziemlich sicher, dass einige wissen was ich falsch mache :), deswegen wäre ich dankbar wenn mich jemand auf meine Fehler aufmerksam macht ;)

return Label;

Verfasst: 8. Mai 2009 17:30
von Christian81
QDir ist ein Objekt, kein Zeiger.
-->
bool searchPath(const QString &path, const QDir& directory = QDir());

Verfasst: 8. Mai 2009 17:45
von Label
OK, kompiliert wird es jetzt. Dafür schon mal ein Danke.
ABER, das heißt doch, dass ich 'directory' innerhalb der Funktion nicht ändern kann, weil sie ja 'const' ist, richtig?
Ich möchte sie aber ändern, weil in 'directory' der Pfad, der in 'path' übergeben wird als QDir gespeichert werden soll, falls der Pfad gefunden wurde.

Wie stell ich dass denn am besten an?

Verfasst: 8. Mai 2009 17:49
von Christian81
Dann eben nicht als Referenz übergeben sondern by value.
Aber wenn Du es sowieso den Pfad in einer anderen Variable speicherst - wo ist das Problem?

Verfasst: 8. Mai 2009 20:59
von Label
Danke für die schnelle Antwort.
Hätte ich auch selbst drauf kommen können. *sich an die Stirn klatscht*

Zu deiner Frage:
Die Funktion soll dafür da sein, um zu prüfen, ob es diesen Pfad überhaupt gibt.
Wenn es den Pfad geben sollte und man den 2. Parameter angibt, bekommt man in dieses QDir dann den Pfad gleich eben als QDir zurückgeliefert.

Verfasst: 8. Mai 2009 21:26
von Christian81
Dann ist aber ein Standardparameter nicht angebracht... denn der geht ja dann ins Nirvana. Außerdem gibts ne Warning über eine temporäre Variable (und msvc kompiliert es erst gar nicht denke ich)

Verfasst: 11. Mai 2009 08:52
von RavenIV
Label hat geschrieben: Zu deiner Frage:
Die Funktion soll dafür da sein, um zu prüfen, ob es diesen Pfad überhaupt gibt.
Hab ich da nicht schon eine Qt-Funktion dafür gesehen?
QDir.exist() oder so ähnlich.