错误C2143:语法错误:缺少';'在'使用'之前

时间:2014-02-27 07:23:04

标签: c++ static

这是我的标题:

#ifndef HEADER_H
#define HEADER_H

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

    public:
        static void displayMessage();

}


#endif // HEADER_H

这是标题定义:

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

using namespace std;

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

这是主要的:

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

using namespace std;

enum Math::names;

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

我收到了这些错误:

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

其中一个是主要的,另一个是标题定义, 我在编程中遇到过几次 可以在这种情况下为我解释,

请帮帮我

最好的问候

Amin khormaei

3 个答案:

答案 0 :(得分:13)

预处理后,“标题定义”的源代码 [1] 变得像

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

现在让我们看看error C2143: syntax error : missing ';' before 'using'。上面的代码中using在哪里? using之前的内容是什么?

}
^ This    

using namespace std;

由于错误中标有missing ';'的部分,我们必须添加错误的;

};
 ^

[1] 更准确地称为“翻译单位”。

答案 1 :(得分:6)

;的定义后,您错过了class Math

答案 2 :(得分:0)

  

缺少';'在'使用'之前

请阅读它告诉你的内容。有一个失踪;在using之前。然后查看您的代码,您在哪里使用using? (编译器很可能告诉你这一行)

#include "Header.h"

using namespace std;

using之前的事情是什么?标题包括。

编译器很可能以线性方式遍历您的代码,因此它在查看#include "Header.h"时所执行的操作是通过该文件。这意味着错误将是“Header.h”的结尾。事实上,有一个缺失;在类声明的最后,就像编译器告诉你的那样。