[gelöst] Standardwert für Parameter

Du bist neu in der Welt von C++? Dann schau hier herein!
Antworten
Label
Beiträge: 55
Registriert: 15. August 2008 10:03

[gelöst] Standardwert für Parameter

Beitrag 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;
Zuletzt geändert von Label am 8. Mai 2009 21:00, insgesamt 1-mal geändert.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

QDir ist ein Objekt, kein Zeiger.
-->
bool searchPath(const QString &path, const QDir& directory = QDir());
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Label
Beiträge: 55
Registriert: 15. August 2008 10:03

Beitrag 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?
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag 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?
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Label
Beiträge: 55
Registriert: 15. August 2008 10:03

Beitrag 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.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag 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)
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
RavenIV
Beiträge: 267
Registriert: 21. Januar 2009 14:24
Wohnort: Waldshut

Beitrag 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.
Linux, das längste Text-Adventure aller Zeiten
Antworten