头文件中的类 - 无法编译?

时间:2012-07-30 10:07:41

标签: c++

我是c ++的新手。我正在尝试用c ++创建头文件以将类放入其中并将其包含在主fn中。当我在.h文件中声明只有函数(不是类成员fns。)以及它们在同名的.cpp文件中的定义时,一切正常。但是,当在头文件中定义类时,它会在编译项目时出现一些错误!请帮我解决这个问题,因为我在网上找不到任何有用的东西(谷歌)。

这是我的代码:

// STUDENT.h
#ifndef STUDENT
#define STUDENT

class STUDENT
{
private :
int marks;
public :
void setMarks(int);
void getMarks();
};

#endif

// STUDENT.cpp

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

void STUDENT :: setMarks(int x)
{
marks = x;
}

void STUDENT :: getMarks()
{
cout << marks;
}

// main.cpp

#include <cstdlib>
#include <iostream>
#include "STUDENT.h"

using namespace std;

int main(int argc, char *argv[])
{
system("PAUSE");
return EXIT_SUCCESS;
}

其他细节 错误显示在dev c ++:

(3)在main.cpp中包含的文件中 (5)匿名工会不能拥有fn。会员 (11)抽象声明人''用作声明 (11)namespace-scope匿名聚合必须是静态的

P.S我还没有在main中使用类的对象。只是想测试它b4写实际程序

3 个答案:

答案 0 :(得分:7)

预处理器看到了这个:

#define STUDENT

class STUDENT
{
    …
};

编译器(在预处理之后)看到:

class
{
    …
};

答案 1 :(得分:1)

你的问题是这两行:

#define STUDENT

class STUDENT

其中第一个告诉预处理器定义名为STUDENT并使用空体。当预处理器看到任何提及STUDENT时,它替换与身体一起,在这种情况下没有(因为宏体是空的)。

要解决此问题,请更改#define或更改班级名称。

答案 2 :(得分:1)

重命名标题保护如下,你应该没问题

#ifndef STUDENT_H
#define STUDENT_H