0

私は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 これは解決すべき問題だと思います。

4

3 に答える 3

4

まず、#errorGradeBook.cpp の末尾に行 (またはその他の構文エラー) を追加します。ビルドしようとすると、その行のコンパイル エラーが発生することを確認してください。そうでない場合は、プロジェクトまたはメイクファイルからのファイル参照のスペルと大文字と小文字を確認してください。

構文エラーが発生する場合、または発生しないがファイルが参照されていない理由がわからない場合は、次の手順を試してください: #errorGradeBook.cpp から を削除し#include "GradeBook.cpp"、main.cpp の末尾に追加します。 . これには 2 つの目的があります。作業を開始する (ビルドして実行できるようになる) ことと、問題を絞り込むのに役立ちます (機能する場合は、GradeGook.cpp の内容ではなく、GradeGook.cpp の参照に問題があることがわかります)。

于 2012-12-06T05:10:04.073 に答える
1

GradeBook.cppをコンパイルしていないようです

于 2012-12-06T08:46:46.097 に答える
0

プロジェクト フォルダーには CMakeList.txt というファイルがあり、その上にプロジェクトの一部であるファイルがあります。GradeBook.cpp ファイルを add_executable 行に追加しようとしましたが、それでも機能しませんでした。しかし、ファイル名を小文字に置き換え、説明した行を変更すると、すべてが正常に機能しました。ファイル名に大文字がない場合や、名前どおりにこのリストに追加した場合と同様に、何が間違っているのかわかりません。

次に、ファイルの名前を gradebook.h と gradebook.cpp に変更し、gradebook.cpp を add_executable 行に追加しました。

于 2012-12-07T01:15:57.343 に答える