Ich kann anscheinend nicht herausfinden, was mit meiner Funktion nicht stimmt.... Ich muss den Benutzer nach einem Preis fragen und ihn dann als Doppelzeiger zurückgeben, aber ich erhalte Tonnen und Tonnen von Fehlern:
double* getPrice()
{
double* price;
cout << "Enter Price of CD: " << endl;
cin >> &price;
return price;
}
Antworten:
Um einen Zeiger jeglicher Art zu verwenden, muss er auf einen gültigen Speicher zeigen. Im Moment haben Sie einen Zeiger, der nicht initialisiert ist und auf Müll zeigt. Versuchen Sie Folgendes
double* price = new double();
Zusätzlich benötigen Sie cin pass zu einem double
kein double**
.
cin >> *price;
Beachten Sie, dass dadurch Ihrem Prozess neuer Speicher zugewiesen wird, der zu einem späteren Zeitpunkt freigegeben werden muss. Nämlich durch den Aufrufer von getPrice. Zum Beispiel
double* p = getPrice();
...
delete p;
Idealerweise sollte Ihnen in diesem Szenario überhaupt kein Zeiger zugewiesen werden, da dies zu unnötigem Speicherverwaltungsaufwand führt. Eine viel einfachere Implementierung wäre die folgende
double getPrice() {
double price;
cout << "Enter Price of CD: " << endl;
cin >> price;
return price;
}
Einige Code-Antworten
double* getPrice() {
double* price;
cout <<
"Enter Price of CD: " <<
endl;
cin >>
&price;
return price;
}
double* price = new double();
cin >>
*price;
double* p = getPrice();
... delete p;
double getPrice() { double price;
cout <<
"Enter Price of CD: " <<
endl;
cin >>
price;
return price;
}