So ändern Sie die member-Wert eines struct-Objekts? (C++ struct Anfänger)
Erst am Anfang zu lernen, über die Strukturen, ich dachte, ich Verstand, wie Sie arbeiten, mit dem Punkt-operator zum Zugriff auf einen member eines Objekts, aber ich eindeutig nicht als readEmployeeRecord Funktion unten funktioniert überhaupt nicht. Wie soll ich das machen? (der code ist kurz und selbst explantory)
Vielen Dank für die Zeit nehmen, weiter zu erklären, structs zu mir! Natürlich habe ich versucht google den ersten, aber ich nicht finden konnte, ein Beispiel, dass die eingegebenen Daten ganz so wie ich wollte und nicht sicher war, wie sollte ich über Sie gehen.
#include <iostream>
#include <iomanip>
using namespace std;
//Employee type
struct Employee{
float wage;
char status;
char dept[4]; //for 3letter department, last position is \0 correct?
};
//function definitions
void readEmpoyeeRecord(Employee staff);
void printEmployeeRecord(Employee staff);
int main(){
Employee employeeA;
readEmpoyeeRecord(employeeA);
printEmployeeRecord(employeeA);
return 0;
}
void readEmpoyeeRecord(Employee employee){
cout << "Enter empolyees wage: ";
cin >> employee.wage;
cout << "Enter empolyees status (H or S): ";
cin >> employee.status;
cout << "Enter empolyees dept (ABC): ";
cin >> employee.dept;
}
void printEmployeeRecord(Employee staff){
cout << "Wage: Status: Department:" <<endl;
cout << fixed << setprecision( 2 ) << staff.wage;
}
- Können Sie beschreiben, was Sie bedeuten, von 'funktioniert überhaupt nicht?' Was ist passiert und was Sie erwarten zu geschehen?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen Sie zunächst, die google-Suche für "Parameterübergabe per Referenz und per Wert".
Lernen Sie, dass:
übergibt die variable an die Funktion von Wert, was bedeutet, dass eine Kopie des Objekts erstellt wird und innerhalb der Funktion verwendet wird, so dass Ihre ursprüngliche Objekt nicht verändert, sondern eine Kopie.
Das gewünschte Ergebnis zu erhalten, verwenden Sie:
Übergabe by reference bedeutet, dass Sie passieren, dass genau die gleiche Objekt, und nicht eine Kopie.
Dein code funktionieren im Grunde so:
readEmpoyeeRecord(Employee employee)
ist, Kopie durch den Wert, nicht die Referenz, so dass Sie verlieren Sie Ihre änderungen.Verwenden
readEmpoyeeRecord(Employee& employee)
statt.Dein problem ist, dass in C++, Objekte als Wert übergeben werden, bis Sie nichts anderes angeben. So, in den Körper von
readEmpoyeeRecord
man sich mit einer Kopie desemployeeA
, nicht mitemployeeA
selbst.Übergeben Sie einen Verweis auf Ihre
readEmpoyeeRecord
Funktion. Die Signatur vonreadEmpoyeeRecord
Lesen sollte: