我是C ++的新手,我目前正在学习C ++ How To Program 8e这本书。在“将接口与实现分离”一节中,他们给出了一个这样的例子
#include <string>
using namespace std;
class GradeBook
{
public:
GradeBook( string );
void setCourseName( string );
string getCourseName();
void displayMessage();
private:
string courseName;
};
#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;
}
#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)) ===|
我是一个绝对的新手,请帮助。
答案 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