未定义引用`GradeBook :: GradeBook(std :: string)

时间:2014-11-20 13:12:36

标签: c++

我是C ++的新手,我目前正在学习C ++ How To Program 8e这本书。在“将接口与实现分离”一节中,他们给出了一个这样的例子

GradeBook.h

#include <string>
using namespace std;

class GradeBook
{
public:
    GradeBook( string );
    void setCourseName( string );
    string getCourseName();
    void displayMessage();
private:
    string courseName;
};

GradeBook.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 for\n" << getCourseName()
        << "!" << endl;
}

的main.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++\SIFI\main.o:main.cpp|| undefined reference to `GradeBook::GradeBook(std::string)'|
D:\C++\SIFI\main.o:main.cpp|| undefined reference to `GradeBook::GradeBook(std::string)'|
D:\C++\SIFI\main.o:main.cpp|| undefined reference to `GradeBook::getCourseName()'|
D:\C++\SIFI\main.o:main.cpp|| undefined reference to `GradeBook::getCourseName()'|
||=== Build failed: 4 error(s), 0 warning(s) (0 minute(s), 0 second(s)) ===|

我是一个绝对的新手,请帮助。

3 个答案:

答案 0 :(得分:0)

一些Code :: Blocks bug ...有时候,你的cpp文件没有添加到你的项目中,你必须自己添加到你的项目中。 (比如“file&gt; add file&gt; existing file”?)

答案 1 :(得分:0)

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

答案 2 :(得分:0)

对于那些使用普通GNU Fortran编译器而不是诸如代码块之类的IDE的用户,这将是命令行:

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