无法使用标头创建课程

时间:2017-02-08 11:59:28

标签: c++ class oop

我从“Primer C ++”一书中学习C ++。 与我以前在Java中所做的不同,我了解到这是定义类和类的好方法。方法'头文件中的原型。 所以我按照本书的步骤,在.cpp文件中实现方法和构造函数。

结果是无数错误报告。

Student.h

#ifndef STUDENT_H_
#define STUDENT_H_
class Student{
    private:
        string firstname;
        string lastname;
        double gpa;
    public:
        Student();
        Student(string fname,string lname, double aGpa);
        ~Student();
        void Show();
        double getGpa();
};
#endif

在编译时返回以下错误:

  • 未知名称类型"类"
  • 学生之后预期{等等 属性(当然,因为它无法理解它是一个类)

我还试图包含cstring和字符串库(编译器都找不到它们,我想因为它只是一个.cpp文件可以访问的东西)以使用库结束,但这并没有改变一件事。

Student.cpp

#include <iostream>
#include <cstring>
#include "student.h"

using std::cout;
using std::cin;
using std::endl;


Student::Student(){
    cout << "Default constructor called\n";
    cout << "No info regarding the student. Object not initialized";
}
Student::Student(string fname,string lname, double aGpa){
    this->firstname=fname;
    this->lastname=lname;
    this->gpa=aGpa;
}
void Student::Show(){
    cout << lastname <<", " << firstname <<"\nGPA: " << gpa << endl;
}
double Student::getGpa(){
    return this->gpa;
}
Student::~Student(){
    cout<< "Object student has been destroyed";
}

在编译时返回以下错误

  • string(在student.h中)没有命名类型(即使我包含string.h)
  • 在Student.h中,预期&#39;)&#39;在fname之前(在构造函数声明中)
  • 在Student.cpp中的
  • ,在&#39;之前的预期构造函数(&#39;令牌(在构造函数声明中)
  • 在函数Show()中,lastname和firstname等未在此范围内声明(但显然是GPA)

1 个答案:

答案 0 :(得分:1)

我不知道您的编译器错误,但您的头文件缺少使用std::string的内容:

#include <string>
using std::string;

您确定使用的是c ++编译器而不是c编译器吗?