Ich habe das folgende Programm, wo zwei Variablen durch Verweis auf eine Funktion übergeben werden, wo ihre Werte basierend auf externen Faktoren bestimmt werden, bevor sie an main()
zurückgegeben werden, damit sie von anderen Funktionen verwendet werden können. Die erste Variable, die ich versuche zu übergeben, ist eine int
, und das geht gut, aber die andere ist ein Array von Strings, die mir einige Probleme verursacht.Wie kann ich ein Array durch Verweis auf eine Funktion in C++ übergeben?
Ich habe genug Forschung darüber getan, um zu wissen, dass Sie kein Array oder Referenzen haben können (obwohl ich noch nicht herausfinden warum) und ich fragte mich, ob jemand mir helfen könnte, herauszufinden, wie dies zu tun ist ? Die verschiedenen Methoden, die ich versucht habe, haben alle segmentation faults
ergeben.
NB: Der Code unten hat das Array von Wert übergeben, da ich einfach nicht weiß, was ich dafür schreiben soll.
Update: Ich bin verpflichtet, ein Array für meine Kursarbeit zu verwenden. Einige andere Datenstrukturen, wie die vector
, die vorgeschlagen wurde, wäre großartig, aber ich muss bestimmte Strukturen verwenden.
void initialise_existing_devices(int& no_of_existing_devices, string existing_devices[100]);
int main()
{
int no_of_existing_devices = 0;
string existing_devices[100];
initialise_existing_devices(no_of_existing_devices, existing_devices[100]);
}
void initialise_existing_devices(int& no_of_existing_devices, string existing_devices[100])
{
string line;
ifstream DeviceList;
DeviceList.open("devices/device_list");
while (true)
{
getline(DeviceList, line, '\n');
if (DeviceList.eof())
{
break;
}
++ no_of_existing_devices;
}
DeviceList.close();
DeviceList.open("devices/device_list");
for (int i = 0; i < no_of_existing_devices; i ++)
{
getline(DeviceList, line, '\n');
existing_devices[i] = line;
}
}
Der Code in der Frage versucht, ein Array übergeben * in * eine Funktion, erhalten nicht ein . –
@Andy: Es wird als ein out-Parameter verwendet; Die Funktion gibt Ergebnisse über das Array zurück, das das OP als Referenz übergeben möchte. Es ist viel sauberer, Rückgabewerte anstelle von Out-Parametern zu verwenden. –
Oder wenn Sie denken, dass Sie einen Container als Out-Parameter benötigen, verwenden Sie stattdessen einen Ausgabe-Iterator, und lassen Sie den Aufrufer 'back_inserter' verwenden. Diese Annahmevorlagen sind in Ordnung. –