我是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写实际程序
答案 0 :(得分:7)
预处理器看到了这个:
#define STUDENT
class STUDENT
{
…
};
编译器(在预处理之后)看到:
class
{
…
};
答案 1 :(得分:1)
你的问题是这两行:
#define STUDENT
class STUDENT
其中第一个告诉预处理器定义名为STUDENT
的宏并使用空体。当预处理器看到任何提及STUDENT
时,它替换与身体一起,在这种情况下没有(因为宏体是空的)。
要解决此问题,请更改#define
或更改班级名称。
答案 2 :(得分:1)
重命名标题保护如下,你应该没问题
#ifndef STUDENT_H
#define STUDENT_H