12

this is my header:

#ifndef HEADER_H
#define HEADER_H

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

    public:
        static void displayMessage();

}


#endif // HEADER_H

and this is the header definition:

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

using namespace std;

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

and this is the main:

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

using namespace std;

enum Math::names;

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

i got these errors:

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

one of them is for main and the other is for header definition, i have encountered several time in my programming, could explain that for me in this situation,

please help me

best regards

Amin khormaei

codemania
  • 1,098
  • 1
  • 9
  • 26
Amin Khormaei
  • 379
  • 3
  • 8
  • 23

3 Answers3

15

After preprocessing, your source code[1] for your "header definition" becomes like

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

Let's now see error C2143: syntax error : missing ';' before 'using'. Where is using in the above code? What is it before using?

}
^ This    

using namespace std;

Because of the part of the error that says missing ';', we must add that missing ;.

};
 ^

[1] More precisely called a "translation unit".

Mark Garcia
  • 17,424
  • 4
  • 58
  • 94
7

You're missing a ; after the definition of class Math.

Mike Seymour
  • 249,747
  • 28
  • 448
  • 644
1

missing ';' before 'using'

Just read what it tells you. There is a missing ; before using. Then look at your code, where did you use using? (the compiler likely told you the line)

#include "Header.h"

using namespace std;

What's before using? The header include.

The compiler most likely goes through your code in a linear manner, so what it did when it saw #include "Header.h" was to go through that file. Meaning that the error will be the very end of "Header.h". And indeed, there is a missing ; at the end of the class declaration, just like the compiler told you.

Lundin
  • 195,001
  • 40
  • 254
  • 396