私は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> make
CXX 実行可能ファイルのリンク hola
CMakeFiles/hola.dir/main.o: in function 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: [all] エラー 2
失敗
Eclipse Juno CDT から同じコードを実行すると、次のように返されます。
gradeBook1 created for course: CS101 Introduction to C++ Programming
gradeBook2 created for course: CS102 Data Structures in C++
KDevelop から実行するのを手伝ってくれる人はいますか?
更新:コメントに基づいて、KDevelop はプロジェクト内の他のファイルをコンパイルしていません:s これは解決すべき問題だと思います。