Was ist der richtige Weg, um NULL-Zeichenfolgen an eine Funktion zu übergeben, ohne eine Variable zu erstellen? Ich sehe Kompilierungsfehler mit folgendem Code und ich möchte die Definition nicht ändern. Möglicherweise müssen Sie auch die Zeichenfolge ändern, um sie nicht als konstanten Typ zu markieren.Übergeben der Nullzeichenfolge, um als Argument zu fungieren
#include <iostream>
#include <string>
using namespace std;
void
myfunc(int i, string &my) {
if (my.empty()) {
cout << "Empty" << endl;
} else {
cout << "String is " << my <<endl;
}
}
int main()
{
std::string str1 ("Test string");
myfunc(1, str1);
std::string str2 ("");
myfunc(2, "");
return 0;
}`
my1.cpp: 18: Fehler: ungültige Initialisierung nicht const Referenz vom Typ 'std :: string &' von einem temporären des Typs 'const char *' my1.cpp: 6: Fehler: in Gabe des Arguments 2 von 'Leeren myfunc (int, std :: string &) '
nach compiliert, aber ich mag nicht lokalen Variable
#include <iostream>
#include <string>
using namespace std;
void
myfunc(int i, string &my) {
if (my.empty()) {
cout << "Empty" << endl;
} else {
cout << "String is " << my <<endl;
}
}
int main()
{
std::string str1 ("Test string");
myfunc(1, str1);
std::string str2 ("");
myfunc(2, str2);
return 0;
}
Sie übergeben als Referenz bedeutet, die Adresse der Variablen nicht den Wert übergeben. wenn Sie nach Wert übergeben möchten. – Raindrop7
Referenzen werden normalerweise als verdeckter Zeiger implementiert, aber dies wird vom Standard nicht benötigt. Was ** erforderlich ist ** ist, dass die Referenz tatsächlich auf ein korrektes Objekt verweist. –
@ Raindrop7, Haben wir einen Weg, auf dem wir einen Verweis auf String übergeben können, ohne ein Objekt zu erstellen? – Tectrendz