【发布时间】:2017-04-05 22:26:39
【问题描述】:
我是 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,然后我继续执行我的 main.cpp 并得到:
/home/brallan/projects/Hola/build> 制作
链接 CXX 可执行文件 hola
CMakeFiles/hola.dir/main.o:在 main 函数中:
/home/brallan/projects/Hola/main.cpp:8:未定义对 GradeBook::GradeBook(std::string)'的引用 /home/brallan/projects/Hola/main.cpp:9:未定义对 GradeBook::GradeBook(std::string)'的引用 /home/brallan/projects/Hola/main.cpp:12:未定义对 GradeBook::getCourseName()'的引用
/home/brallan/projects/Hola/main.cpp:11: 未定义对 GradeBook::getCourseName()' 的引用
collect2:错误:ld 返回 1 个退出状态
make[2]: [hola] 错误 1
make[1]: [CMakeFiles/hola.dir/all] 错误 2
make: [全部] 错误 2
失败
如果我从 Eclipse Juno CDT 运行相同的代码,它会返回:
gradeBook1 created for course: CS101 Introduction to C++ Programming
gradeBook2 created for course: CS102 Data Structures in C++
谁能帮我从 KDevelop 运行它?
更新:基于 cmets,KDevelop 不会编译项目中的其他文件:s 我想这就是要解决的问题。
【问题讨论】:
-
您的 IDE 似乎没有编译
GradeBook.cpp。 -
您的代码格式是否如图所示?例如,你真的有一个 using 命名空间与 #include 在同一行吗?听起来您在查找 Grade.cpp 时可能会出错。当我将所有内容放在一个文件中并进行细微调整时(例如将命名空间放在单独的行中并在 main 末尾添加一个 return)它可以工作,因此看起来查找文件是一个问题。
-
不,我将 using 命名空间换行了。
-
您是否在 KDevelop 项目中包含了 GradeBook.cpp?重建项目时,您是否看到与该文件有关的编译器消息?
-
当我创建我的 C++ 项目时,我使用 KDevelop 在同一个文件夹中制作每个文件...