2016-08-28 2 views
-4

Dies ist ein verrückter Fehler und gibt mir eine Menge Ärger.qualifizierte Nummer in Erklärung vor ‚(‘ Token

#include <iostream> 

using namespace std; 

class Book { 
private: 
    int bookid; 
    char bookname[50]; 
    char authorname[50]; 
    float cost; 

public: 
    void getinfo(void) { 
     for (int i = 0; i < 5; i++) { 
      cout << "Enter Book ID" <<endl; 
      cin >> bookid; 

      cout << "Enter Book Name" << endl; 
      cin >> bookname; 
      cout << "Enter Author Name" << endl; 
      cin >> authorname; 
      cout << "Enter Cost" << endl; 
      cin >> cost; 
     } 
    } 

    void displayinfo(void); 

}; 


int main() 
{ 
    Book bk[5]; 
    for (int i = 0; i < 5; i++) { 
     bk[i].getinfo(); 
    } 

    void Book::displayinfo() { 
     for(int i = 0; i < 5; i++) { 
      cout << bk[i].bookid; 
      cout << bk[i].bookname; 
      cout << bk[i].authorname; 
      cout << bk[i].cost; 
     } 
    } 

    return 0; 
} 

Der Fehler, wie im Titel vermerkt Erklärung erwartet, bevor ‚}‘ token an dem Linie Leeren Buch :: displayinfo() in Haupt

auch dieser Fehler KOMMT erwartet ‚}‘ am Ende des Eingangs

+1

Sie können 'void Book :: displainfo()' nicht in 'main' definieren. Mitgliederfunktionsdefinitionen gehören in den Bereich, in dem die Klasse definiert ist. In diesem Fall globaler Geltungsbereich. – StoryTeller

+1

Verschieben Sie die Definition von 'void Book :: displayinfo() {' aus dem 'main()' body. Auch der Formatierungseindruck kann verbessert werden. –

+0

Sehr interessant. Was ist deine Frage? – juanchopanza

Antwort

1

Bewegen Sie die Funktionsdefinition void Book::displayinfo(){} aus den main().

Zusammen mit diesem habe ich noch mehr Vorschläge für Sie. Aktualisieren Sie Ihre Klassendefinition wie folgt:

class Book{ 
private: 
    int bookid; 
    string bookname; // char bookname[50]; because it can accept book name length more than 50 character. 
    string authorname; // char authorname[50]; because it can accept authorname length more than 50 character. 
    float cost; 

public: 
    void getinfo(void){ 
    for(int i =0; i < 5; i++){ 
     cout << "Enter Book ID" <<endl; 
     cin >> bookid; 

     cout << "Enter Book Name" << endl; 
     getline(cin,bookname); // Because book name can have spaces. 
     cout << "Enter Author Name" << endl; 
     getline(cin,authorname); // Because author name can have spaces too. 
     cout << "Enter Cost" << endl; 
     cin >> cost; 

    } 
    } 

    void displayinfo(void); 

};