-1

私は最近、他の言語で数年過ごした後、c++ を使い始めましたが、コードをコンストラクターでコンパイルするのに問題があります。コメントアウトするとすべてが正常に機能するため、コンストラクターに問題があることはわかっています。一部のコードを C++ の本から直接コピーしましたが、まだエラーが発生します。コマンドラインでg ++を使用してコンパイルしています。コンパイラ エラー:

Undefined symbols for architecture x86_64:
  "GradeBook::GradeBook(std::basic_string<char, std::char_traits<char>, std::allocator<char> >)", referenced from:
      _main in ccoPO1iA.o
ld: symbol(s) not found for architecture x86_64
collect2: ld returned 1 exit status

どんな助けでも大歓迎です

gradeBookTest.cpp

#include <iostream>
#include "GradeBook.h"

using namespace std;

int main()
{
GradeBook book1("newClass");
}

GradeBook.h

#include <string>

using namespace std;

class GradeBook
{
public:
GradeBook(string);
void setCourseName(string);
string getCourseName();
void displayMessage();

private:
string courseName;
};

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 << "this is the gradebook for\n" << getCourseName() << endl;
}

コードをブラウザにコピーすると、インデントがめちゃくちゃになりました...

4

1 に答える 1

2

GradeBook.cppと一緒にコンパイルする必要がありますgradeBookTest.cpp。これは、コンパイラーがコンストラク.hターを認識できるが、リンク時にそのコンストラクターの関数定義がどこにも表示されないために発生します。

g++ -o test GradeBookTest.cpp GradeBook.cpp
于 2013-01-22T02:46:14.050 に答える