使用KDevelop 4.4.1的未定义引用 我是一个C++初学者。我写了以下内容: // GradeBook.h #include <iostream> #include <string> using namespace std; class GradeBook { public: GradeBook(string); // constructor that initializes courseName void setCourseName(string); // function that sets the course name string getCourseName(); // function that gets the course name void displayMessage(); // function that displays a welcome message private: string courseName; // course name for this GradeBook }; // 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 course: " << gradeBook1.getCourseName() << "\ngradeBook2 created for course: " << gradeBook2.getCourseName() << endl; }

使用KDevelop 4.4.1的未定义引用 我是一个C++初学者。我写了以下内容: // GradeBook.h #include <iostream> #include <string> using namespace std; class GradeBook { public: GradeBook(string); // constructor that initializes courseName void setCourseName(string); // function that sets the course name string getCourseName(); // function that gets the course name void displayMessage(); // function that displays a welcome message private: string courseName; // course name for this GradeBook }; // 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 course: " << gradeBook1.getCourseName() << "\ngradeBook2 created for course: " << gradeBook2.getCourseName() << endl; },c++,reference,kdevelop,C++,Reference,Kdevelop,有人能帮我从KDevelop运行它吗? 更新:根据评论,KDevelop没有编译项目中的其他文件:s 我想这就是要解决的问题。首先,在GradeBook.cpp的末尾添加一行#error(或任何其他语法错误)。确保在尝试构建该行时,该行出现编译错误。如果不是,请检查项目或makefile中文件引用的拼写和大小写 如果确实出现语法错误,或者如果没有,但无法找出文件未被引用的原因,请下一步尝试:从GradeBook.cpp中删除#错误,并将#include“GradeBook.cpp”添加到main

有人能帮我从KDevelop运行它吗?

更新:根据评论,KDevelop没有编译项目中的其他文件:s 我想这就是要解决的问题。

首先,在GradeBook.cpp的末尾添加一行
#error
(或任何其他语法错误)。确保在尝试构建该行时,该行出现编译错误。如果不是,请检查项目或makefile中文件引用的拼写和大小写

如果确实出现语法错误,或者如果没有,但无法找出文件未被引用的原因,请下一步尝试:从GradeBook.cpp中删除
#错误
,并将
#include“GradeBook.cpp”
添加到main.cpp的末尾。这有两个目的:它让你开始(现在应该能够构建和运行)并有助于缩小问题范围(如果可行,你知道问题在于引用GradeGook.cpp,而不是它的内容)。

首先,在GradeBook.cpp的末尾添加一行
\error
(或任何其他语法错误)。确保在尝试构建该行时,该行出现编译错误。如果不是,请检查项目或makefile中文件引用的拼写和大小写


如果确实出现语法错误,或者如果没有,但无法找出文件未被引用的原因,请下一步尝试:从GradeBook.cpp中删除
#错误
,并将
#include“GradeBook.cpp”
添加到main.cpp的末尾。这有两个目的:它让你开始(现在应该能够构建和运行)并有助于缩小问题范围(如果可行,你知道问题在于引用GradeGook.cpp,而不是它的内容)。

似乎你没有编译成绩册。cpp

似乎你没有编译成绩册。cpp

在项目文件夹中,有一个名为CMakeList.txt的文件,上面有属于项目的文件。我试图添加文件GradeBook.cpp以添加可执行行,但仍然不起作用。然而,当我用小写替换文件名,并修改我描述的行时,一切正常。如果文件名没有上限,或者如果我将其完全按照调用的方式添加到此列表中,我不确定会有什么错误


然后,我重命名了文件gradebook.h和gradebook.cpp,并添加了gradebook.cpp以添加可执行行。

在项目文件夹中,有一个名为CMakeList.txt的文件,上面是作为项目一部分的文件。我试图添加文件GradeBook.cpp以添加可执行行,但仍然不起作用。然而,当我用小写替换文件名,并修改我描述的行时,一切正常。如果文件名没有上限,或者如果我将其完全按照调用的方式添加到此列表中,我不确定会有什么错误


然后,我重命名了文件gradebook.h和gradebook.cpp,并添加了gradebook.cpp以添加可执行行。

您的IDE似乎没有编译
gradebook.cpp
。您的代码格式是否如图所示?例如,您真的有一个与#include位于同一行的using命名空间吗?听起来您可能在查找Grade.cpp时出错。当我将所有内容都放在一个文件中并进行一些小的调整(比如将名称空间放在自己的行上,并在main的末尾添加一个回车符)时,它就起作用了,所以看起来查找文件是个问题。不,我在一个新行中使用了名称空间。KDevelop项目中是否包含了GradeBook.cpp?当你重建项目时,你看到编译器消息与那个文件有关吗?当我创建我的C++项目时,我在同一个文件夹中使用KDebug制作每一个文件……看来你的IDE没有编译<代码> GrordBoo.CPP < /代码>。例如,您真的有一个与#include位于同一行的using命名空间吗?听起来您可能在查找Grade.cpp时出错。当我将所有内容都放在一个文件中并进行一些小的调整(比如将名称空间放在自己的行上,并在main的末尾添加一个回车符)时,它就起作用了,所以看起来查找文件是个问题。不,我在一个新行中使用了名称空间。KDevelop项目中是否包含了GradeBook.cpp?当你重建项目时,你看到编译器消息与那个文件有关吗?当我创建我的C++项目时,我在同一个文件夹中使用kDebug制作每个文件……首先我在Grand Boogle.CPP上写了一个错误的行,后来编译Meun.CPP而不显示错误。最后,我删除了错误并将#include“GradeBook.cpp”放在main.cpp中,以获得我想要的结果。但是我们假设我从一开始就得到的方法是正确的?您提到的“compilemain.cpp”就是一个线索。通常,不要编译单个.cpp文件,而是编译整个项目。如果出于某种原因,您只能告诉编译器编译单个文件(在本例中为main.cpp),那么使用#include拉入GradeBook.cpp将是正确的方法。但这不是C++的设计。您已经向自己证明,编译器只使用main.cpp作为翻译单元。因此,现在请注意确保编译的是整个项目,而不是单个文件,并且main.cpp和GradeBook.cpp在项目中的设置相同。首先,我在GradeBook.cpp上写了一行有错误的代码,然后编译main.cpp,不显示错误。最后,我删除了错误并将#include“GradeBook.cpp”放在main.cpp中,以获得我想要的结果。但是我们假设我从一开始就得到的方法是正确的?您提到的“compilemain.cpp”就是一个线索。通常,不要编译单个.cpp文件,而是编译整个项目。如果出于某种原因,您只能告诉编译器编译单个文件(在本例中为main.cpp),那么使用#include拉入GradeBook.cpp将是正确的方法。但这不是C++的设计。你已经向自己证明了
gradeBook1 created for course: CS101 Introduction to C++ Programming
gradeBook2 created for course: CS102 Data Structures in C++