2016-05-11 27 views
-6

Bitte helfen Sie mir, diesen Fehler zu entfernen, machte ich diese beiden Strukturen, und wenn ich versuche, das Cin zu verwenden, zeigt es diesen Fehler, wie kann ich diesen Fehler entfernen und bitte auch sagen, wie man einen String in Eingabe mit cin.getline und bekommt().wie Fehler zu entfernen: erwarteter primärer Ausdruck vor '.' Token

#include <iostream> 

using namespace std; 
struct Date //Date structure 
{ 
    int day; 
    int month; 
    int year; 
}; 
struct Employee //employee structure 
{ 
    int Id; 
    char Name[40]; 
    int Date; 
    char Gender; 
    char Des[40]; 
}; 
void Setter(Employee E) //function for setting value in Employees 
{ 
    cout<<"Enter Id:"; 
    cin>>Employee.Id; 
    cout<<"Enter Name:"; 
    cin>>Employee.Name; 
    cout<<"Enter Gender:"; 
    cin>>Employee.Gender; 
    cout<<"Enter Designation:"; 
    cin>>Employee.Des; 
    cout<<"Enter Date of joining(DD/MM/YYYY):"; 
    cin>>Employee.Date.day>>Employee.Date.month>>Employee.Date.year; 
} 
int main() //main 
{ 
    Employee el; 
    Setter(el); //calling function 
    return 0; 
} 
+2

Extrem ähnlich: [Fehler: erwarteter primärer Ausdruck vor '.' token] (http://stackoverflow.com/questions/15958577/error-expected-primary-expression-before-token?rq=1) – crashmstr

+0

Ändern Sie "Employee" zu "E", so einfach. –

+0

Die Kapitalisierung Ihrer Klassennamen und Ihrer Eigenschaften wird andere Leute auf die Mauer treiben. Es ist normalerweise viel konventioneller, wenn die Eigenschaften und Variablen wie in Ihrem Date-Beispiel klein geschrieben werden. Außerdem sind 40 Zeichen für einen Namen verrückt kurz. Gibt es einen Grund, hier nicht 'std :: string' zu verwenden? Das ist viel besser, als C-Style-String-Buffer zu kopieren. – tadman

Antwort

1

Employee ist ein Typenname und selbst keine Mitglieder in Daten zu lesen. die Variable können Mitglieder zugreifen.

Darüber hinaus möchten Sie möglicherweise einen Verweis verwenden, um die lokale Variable des Aufrufers zu ändern. Fügen Sie & nach dem Typnamen hinzu, um eine Referenz zu verwenden.

void Setter(Employee& E) //function for setting value in Employees 
{ 
    cout<<"Enter Id:"; 
    cin>>E.Id; 
    cout<<"Enter Name:"; 
    cin>>E.Name; 
    cout<<"Enter Gender:"; 
    cin>>E.Gender; 
    cout<<"Enter Designation:"; 
    cin>>E.Des; 
    cout<<"Enter Date of joining(DD/MM/YYYY):"; 
    //cin>>E.Date.day>>E.Date.month>>E.Date.year; 
} 

Beachten Sie, dass der Kommentar-outed Linie

cin>>E.Date.day>>E.Date.month>>E.Date.year; 

falsch ist, weil die Art der E.Dateint ist und es wird nicht Mitglieder haben. Sie müssen die Deklaration der Struktur ändern, damit die Struktur ein Datum (oder drei zusätzliche Ganzzahlen) enthält.

+0

Vielen Dank – Hamid

+0

Hinweis 'E.Date.day' funktioniert immer noch nicht. – songyuanyao

+0

Wie kann ich es dann arbeiten – Hamid

Verwandte Themen