Ich schreibe einen Passwortgenerator, der in eine Datei lesen und schreiben kann. Ich habe eine Funktion, die eine leere Zeichenfolge annimmt und dann ändert. Die Funktion wie folgt aussehen würde:Einen Zeiger an eine Funktion übergeben und dann in eine andere Funktion einfügen
void password_create(string *passwd)
Innerhalb dieser Funktion habe ich eine Schreibfunktion aufrufen, die mit dem Kennwort in eine Datei schreibt, würde es in etwa so aussehen:
void write_out(string file_name, string *passwd)
Dann wird die Gesamt Code sieht wie folgt aus:
void password_create(string *passwd) {
*passwd = "something";
write_out(&passwd);
}
Die Kompilierung beschwert sich, dass ich nicht std::basic_string<char>**
-std::basic_string<char>*
umwandeln kann.
Ich bin relativ neu in C++, und dieses Programm dient nur dazu, mich mit der Sprache vertraut zu machen. Ich kann passwd
in die write_out()
Funktion ohne *
oder &
übergeben, um einen Zeiger oder eine Referenz ganz gut zu bezeichnen. Es wird mir nicht einen Fehler, wenn ich schreibe:
*passwd = "something";
write_out(passwd);
es nicht den Gesamt Abschluss des Programms nicht beeinflusst, war ich nur neugierig, warum ich diesen Fehler.
TL; DR; Warum nimmst du einen Zeiger auf 'std :: string'? Lieber als Referenz oder nach Wert. –
Wenn die Funktion eine leere Zeichenfolge annimmt, warum braucht sie überhaupt eine Zeichenfolge? –
Bitte geben Sie ein [MCVE] an, das Ihr Problem veranschaulicht. Diese willkürlichen Code-Schnipsel sind nicht hilfreich, um Ihre Frage präzise zu beantworten. –