未定义对“GradeBook::GradeBook(std::string)”的引用

undefined reference to `GradeBook::GradeBook(std::string)

本文关键字:GradeBook 引用 string 未定义 std      更新时间:2023-10-16

我是C++的新手,我目前正在通过C++如何编程8e一书来学习它。在将接口与实现分离一节中,他们给出了一个这样的示例

成绩簿.h

#include <string>
using namespace std;
class GradeBook
{
public:
    GradeBook( string );
    void setCourseName( string );
    string getCourseName();
    void displayMessage();
private:
    string courseName;
};

成绩簿.cpp

#include <iostream>
#include "GradeBook.h"
using namespace std;
GradeBook::GradeBook( string name )
{
    setCourseName( name );
}
void GradeBook::setCourseName( string name )
{
    courseName = name;
}
string GradeBook::getCourseName()
{
    return courseName;
}
void GradeBook::displayMessage()
{
    cout << "welcome to the grade book forn" << getCourseName()
        << "!" << endl;
}

主.cpp

#include <iostream>
#include "GradeBook.h"
using namespace std;
int main()
{
    GradeBook gradeBook1( "CS101 Introduction to C++ Programming" );
    GradeBook gradeBook2( "CS102 Data Structures in C++" );
    cout << "gradeBook1 created for: " << gradeBook1.getCourseName()
        << "ngradeBook2 created for: " << gradeBook2.getCourseName()
        << endl;
}

当我使用 CodeBlocks 执行此操作时,出现以下信息的错误

D:C++SIFImain.o:main.cpp|| undefined reference to `GradeBook::GradeBook(std::string)'|
D:C++SIFImain.o:main.cpp|| undefined reference to `GradeBook::GradeBook(std::string)'|
D:C++SIFImain.o:main.cpp|| undefined reference to `GradeBook::getCourseName()'|
D:C++SIFImain.o:main.cpp|| undefined reference to `GradeBook::getCourseName()'|
||=== Build failed: 4 error(s), 0 warning(s) (0 minute(s), 0 second(s)) ===|

我绝对是新手,请帮忙。

对于那些使用普通的GNU Fortran编译器而不是某些IDE(如CodeBlocks)的人来说,这将是命令行:

g++ main.cpp GradeBook.cpp -o main.x

一些代码::块错误...有时,您的 cpp 文件不会添加到您的项目中,您必须自己将其添加到您的项目中。(类似于"文件>>现有文件添加文件"?

如果您使用的是代码块,则必须先创建一个项目。创建项目后,只需从上面的选项卡中打开项目列,然后单击添加文件。然后在其中添加所有主文件、.h .cpp文件。现在编译它并完成!