title: Getting class type redefinition and a few other errors
body: <p>I'm creating a student data management console application for a project. I created a class called Student which is storing all the data that a student needs to have, and it also has all the getters and setters associated with it. Here is how all my files are laid out:</p>
  
  <p>Student.h</p>
  
  <pre><code>#include &lt;iostream&gt;
  #include &lt;string&gt;
  using namespace std;
  
  
  class Student {
  
  private:
      string name;
      string id;
      string email;
  
      int presentation;
      int essay1;
      int essay2;
      int project;
  
  public:
      //constructor
      //Student();
      //setters
      void set_name(string);
      void set_id(string);
      void set_email(string);
      void set_presentation(int);
      void set_essay1(int);
      void set_essay2(int);
      void set_project(int);
      //getters
      string get_name();
      string get_id();
      string get_email();
      int get_presentation();
      int get_essay1();
      int get_essay2();
      int get_project();
  };
  </code></pre>
  
  <p>Student.cpp</p>
  
  <pre><code>#include &lt;iostream&gt;
  #include &lt;string&gt;
  #include "Student.h"
  using namespace std;
  
  
  //constructor definition
  /*
  Student::Student(void) {
      cout &lt;&lt; "Student created" &lt;&lt; endl;
  }
  */
  
  //setter definition
  void Student::set_name(string s) {
      name = s;
  }
  
  void Student::set_id(string s) {
      id = s;
  }
  
  void Student::set_email(string s) {
      email = s;
  }
  
  void Student::set_presentation(int a) {
      presentation = a;
  }
  
  void Student::set_essay1(int a) {
      essay1 = a;
  }
  
  void Student::set_essay2(int a) {
      essay2 = a;
  }
  
  void Student::set_project(int a) {
      project = a;
  }
  
  //getter definition
  string Student::get_name() {
      return name;
  }
  
  string Student::get_id() {
      return id;
  }
  
  string Student::get_email() {
      return email;
  }
  
  int Student::get_presentation() {
      return presentation;
  }
  
  int Student::get_essay1() {
      return essay1;
  }
  
  int Student::get_essay2() {
      return essay2;
  }
  
  int Student::get_project() {
      return project;
  }
  </code></pre>
  
  <p>Main.cpp</p>
  
  <pre><code>#include &lt;iostream&gt;
  #include &lt;string&gt;
  #include "Student.h"
  using namespace std;
  
  
  int main() {
  
      cout &lt;&lt; "Hello World!" &lt;&lt; endl;
  
      Student student1;
      Student student2;
      Student student3;
  
      student1.set_name("John");
      student2.set_name("Bob");
      student3.set_name("Carl");
  
  
      return 0;
  }
  </code></pre>
  
  <p>When I try to run my program, I get, amongst others, the following errors:</p>
  
  <blockquote>
    <p>Error 1   error C2011: 'Student' : 'class' type redefinition  </p>
    
    <p>Error 2   error C2079: 'student1' uses undefined class 'Student'  </p>
    
    <p>Error 5   error C2228: left of '.set_name' must have class/struct/union   </p>
    
    <p>Error 9   error C2027: use of undefined type 'Student'</p>
  </blockquote>
  
  <p>How can I go about fixing this issue?</p>