web-dev-qa-db-de.com

fehler C2143: Syntaxfehler: fehlt ';' vor Gebrauch'

das ist mein Header:

#ifndef HEADER_H
#define HEADER_H

class Math
{
    private:
        static enum names {amin = 27 , ALi = 46};

    public:
        static void displayMessage();

}


#endif // HEADER_H

und das ist die Header-Definition:

#include <iostream>
#include <iomanip>
#include "Header.h"

using namespace std;

void Math::displayMessage()
{
    cout<<amin<<setw(5)<<ALi<<endl;
}

und das ist das wichtigste:

#include <iostream>
#include "Header.h"

using namespace std;

enum Math::names;

int main()
{
    Math::displayMessage();
}

ich habe diese Fehler bekommen:

error C2143: syntax error : missing ';' before 'using'  
error C2143: syntax error : missing ';' before 'using'  

eine davon ist für main und die andere ist für die Header-Definition. Ich habe in meiner Programmierung schon mehrmals begegnet. Ich könnte das für mich in dieser Situation erklären.

bitte hilf mir 

freundliche Grüße

Amin Khormaei

8
Amin Khormaei

Nach der Vorverarbeitung der Quellcode[1] für deine "Header-Definition" wird wie 

// iostream contents

// iomanip contents


class Math
{
    private:
        static enum names {amin = 27 , ALi = 46};

    public:
        static void displayMessage();

}

using namespace std;

void Math::displayMessage()
{
    cout<<amin<<setw(5)<<ALi<<endl;
}

Lassen Sie uns jetzt error C2143: syntax error : missing ';' before 'using' sehen. Wo ist using im obigen Code? Was ist das vor using?

}
^ This    

using namespace std;

Wegen des Teils des Fehlers, der missing ';' sagt, müssen wir den fehlenden ; hinzufügen.

};
 ^

[1]Genauer gesagt "Übersetzungseinheit".

13
Mark Garcia

Nach der Definition von ; fehlt ein class Math.

6
Mike Seymour

fehlt ';' vor Gebrauch'

Lesen Sie einfach, was es Ihnen sagt. Es fehlt ein; vor using. Dann schauen Sie sich Ihren Code an, wo haben Sie using verwendet? (der Compiler hat Ihnen wahrscheinlich die Zeile mitgeteilt)

#include "Header.h"

using namespace std;

Was ist vor using? Der Header enthält. 

Der Compiler durchläuft Ihren Code höchstwahrscheinlich linear. Was er getan hat, als #include "Header.h" diese Datei durchging Das bedeutet, dass der Fehler das Ende von "Header.h" sein wird. Und in der Tat fehlt es; am Ende der Klassendeklaration, genau wie der Compiler es Ihnen gesagt hat.

0
Lundin