我是一名C++初學者。我寫道:未定義使用KDevelop的引用4.4.1
// 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> make
Linking CXX executable hola
CMakeFiles/hola.dir/main.o: In function main':
/home/brallan/projects/Hola/main.cpp:8: undefined reference to GradeBook::GradeBook(std::string)'
/home/brallan/projects/Hola/main.cpp:9: undefined reference to GradeBook::GradeBook(std::string)'
/home/brallan/projects/Hola/main.cpp:12: undefined reference to GradeBook::getCourseName()'
/home/brallan/projects/Hola/main.cpp:11: undefined reference to GradeBook::getCourseName()'
collect2: error: ld returned 1 exit status
make[2]: [hola] Error 1
make[1]: [CMakeFiles/hola.dir/all] Error 2
make: [all] Error 2
Failed
如果我從Eclipse運行朱諾CDT相同的代碼,這回我:
gradeBook1 created for course: CS101 Introduction to C++ Programming
gradeBook2 created for course: CS102 Data Structures in C++
誰能幫助我從KDevelop的運行呢?
UPDATE:基礎上的評論,KDevelop的是不是編譯其它文件的項目:■ 我想這是一個需要解決的問題。
看來你的IDE沒有編譯'GradeBook.cpp'。 –
您的代碼格式如下所示?例如,你真的在#include的同一行有一個使用的命名空間嗎?這聽起來像你可能會遇到找到Grade.cpp的錯誤。當我把所有東西都放在一個文件中並做一些小的調整時(比如把命名空間放在它自己的行上,並在主結尾處添加一個返回值)它就可以工作,所以它看起來像是找到文件的問題。 – RonaldBarzell
不,我在新行中使用了命名空間。 – Chu