Mis*_* R2 9 c++ class redefinition
我是C++的新手,我在头文件中遇到了类定义问题.头文件(Student.h)的代码是:
#include <string>
using namespace std;
class Student
{
// Data Members for a Student
string id;
string preferences[3];
int skill;
// Constructor
public:
Student(){}
public:
void SetID(string str)
{ this->id = str; }
public:
void SetSkill(int i)
{ this->skill = i; }
public:
void SetPreferences(int i, string s)
{
this->preferences[i] = s;
}
};
class StudentSchedule
{
public:
StudentSchedule(){}
};
Run Code Online (Sandbox Code Playgroud)
编译器错误表示第14行(学生类)是'学生'的重新定义,第15行({ - 类学生后面的开放式大括号)是先前的'学生'定义.StudentSchedule类存在前两个连续行的相同错误.
我的编译中的任何地方都没有定义任何类的.c,.cpp或.h文件.我不知道为什么我会收到这个错误.
Dre*_*ann 25
您需要头部防护上的头文件.据推测,它被包括两次.
修改标题,将这些行添加到开头和结尾.
#ifndef STUDENT_H
#define STUDENT_H
// Put the entire contents of your header here...
#endif
Run Code Online (Sandbox Code Playgroud)
定义不需要STUDENT_H
......它只需要是唯一的.
添加了这些指令后,编译器将忽略头文件的所有内容(如果已经解析).
或者,虽然它不是标准的C++,但所有主要的编译器都允许你放一个
#pragma once
Run Code Online (Sandbox Code Playgroud)
作为标题的第一行,以防止它被多次解析.