单个类具有类重新定义错误

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)

作为标题的第一行,以防止它被多次解析.