我遇到了类的问题,我的IDE告诉我,如果我在main中包含我的.hpp文件,我对构造函数有一个未定义的引用,但是如果我在main中包含我的.cpp文件则不行。我的问题是,在课堂上和各个站点中,它应该是主要包含的.h或.hpp文件。这是我的文件:
Student.hpp
#ifndef STUDENT_HPP
#define STUDENT_HPP
class Student
{
private:
std::string lastName;
double gpa;
public:
Student();
Student(std::string LastName, double Gpa);
void setLastName(std::string LastName);
std::string getLastName();
void setGpa(double Gpa);
double getGpa();
};
#endif //STUDENT_HPP
Student.cpp
#include <iostream>
#include "Student.hpp"
using namespace std;
Student::Student()
{
lastName = "unknown";
gpa = 0.0;
}
Student::Student(string LastName, double Gpa)
{
lastName = LastName;
gpa = Gpa;
}
void Student::setLastName(string LastName)
{
lastName = LastName;
}
string Student::getLastName()
{
return lastName;
}
void Student::setGpa(double Gpa)
{
gpa = Gpa;
}
double Student::getGpa()
{
return gpa;
}
的main.cpp
#include <iostream>
#include "Student.hpp"
using namespace std;
int main()
{
Student liz = Student();
cout << liz.getLastName() << endl;
return 0;
}
感谢您的帮助。
编辑:这对我来说似乎并不重复,我甚至没有能力在这一点上真正理解链接页面。如果它以某种方式说同样的话,那对我来说是另一种语言,我仍然需要帮助。
答案 0 :(得分:3)
您应该一起编译Student.cpp和main.cpp。 例如在linux中
g++ main.cpp Student.cpp -o a.out
您将只获得一个名为“a.out”的输出,将所有这些输出链接在一起。然后运行a.out。
对于Windows codeblocks: