web-dev-qa-db-fra.com

erreur C2143: erreur de syntaxe: manquant ';' avant d'utiliser'

c'est mon entête:

#ifndef HEADER_H
#define HEADER_H

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

    public:
        static void displayMessage();

}


#endif // HEADER_H

et voici la définition de l'en-tête:

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

using namespace std;

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

et c'est le principal:

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

using namespace std;

enum Math::names;

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

j'ai eu ces erreurs:

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

l'un d'eux est pour principal et l'autre est pour la définition d'en-tête, J'ai rencontré plusieurs fois dans ma programmation, pourrait l'expliquer pour moi dans cette situation,

aidez-moi, s'il vous plaît 

meilleures salutations

Amin Khormaei

8
Amin Khormaei

Après le prétraitement, votre code source[1] pour votre "définition d'en-tête" devient comme 

// 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;
}

Voyons maintenant error C2143: syntax error : missing ';' before 'using'. Où est using dans le code ci-dessus? Qu'est-ce que c'est avant using?

}
^ This    

using namespace std;

En raison de la partie de l'erreur qui dit missing ';', nous devons ajouter ce ; manquant.

};
 ^

[1]Plus précisément appelé "unité de traduction".

13
Mark Garcia

Il vous manque un ; après la définition de class Math.

6
Mike Seymour

manquant ';' avant d'utiliser'

Il suffit de lire ce que cela vous dit. Il manque un; avant using. Ensuite, regardez votre code, où avez-vous utilisé using? (le compilateur vous a probablement dit la ligne)

#include "Header.h"

using namespace std;

Que se passe-t-il avant using? L'en-tête comprend. 

Il est fort probable que le compilateur parcourt votre code de manière linéaire. Par conséquent, ce qu’il a fait lorsqu’il a vu #include "Header.h" était de parcourir ce fichier. Cela signifie que l'erreur sera la toute fin de "Header.h". Et en effet, il manque un; à la fin de la déclaration de classe, tout comme le compilateur vous l'a dit.

0
Lundin