1

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

这是我的代码:

// STUDENT.h
#ifndef STUDENT
#define STUDENT

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

#endif

//学生.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) 命名空间范围的匿名聚合必须是静态的

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

4

3 回答 3

7

预处理器看到这个:

#define STUDENT

class STUDENT
{
    …
};

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

class
{
    …
};
于 2012-07-30T10:09:30.613 回答
1

你的问题是这两行:

#define STUDENT

class STUDENT

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

要解决此问题,请更改#define或更改类名。

于 2012-07-30T10:10:30.787 回答
1

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

#ifndef STUDENT_H
#define STUDENT_H
于 2012-07-30T10:14:17.123 回答