私はC++を初めて使い、Dietelの本を勉強しています。この本では、それはI、クラスおよびインタフェースシンプルなC++コードがコンパイルされない(終了コード1でリンカコマンドが失敗しました)
Gradebook.hので
#ifndef GradeBook_h
#define GradeBook_h
#endif /* GradeBook_h */
#include <string>
class GradeBook
{
public:
explicit GradeBook(std::string);
void setCourseName(std::string);
std::string getCourseName() const;
void displayMessage() const;
private:
std::string courseName;
};
Gradebook.cpp
#include <iostream>
#include "GradeBook.h"
using namespace std;
GradeBook::GradeBook(string name)
{
courseName = name;
}
void GradeBook::setCourseName(string name)
{
courseName = name;
}
string GradeBook::getCourseName() const
{
return courseName;
}
void GradeBook::displayMessage() const
{
std::cout << "Welcome to the grade book for " << getCourseName() << std::endl;
}
main.cppに
#include <iostream>
#include "GradeBook.h"
using namespace std;
int main()
{
GradeBook gradeBook1("CS 101 Introduction to C++ Programming");
GradeBook gradeBook2("CS 102 Data Structures in C++");
cout << "gradeBook1 : " << gradeBook1.getCourseName() << endl;
cout << "gradeBook2 : " << gradeBook2.getCourseName() << endl;
}
のためのいくつかのサンプルコードを持っています私のMAC端末でg++ main.cpp -o example.out
を使ってこれをコンパイルしようとしています。しかし、常に私に
Undefined symbols for architecture x86_64: "GradeBook::GradeBook(std::__1::basic_string, std::__1::allocator >)", referenced from: _main in main-0602c7.o ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation)
私は関数宣言とコンストラクタとメンバ変数を除く機能の実装のほとんどを取り払う試みているというエラーを与えているようだが、それは私に与えているように見えますそれでも同じエラー。
私は本から正確にコードをコピーしたと思いますが、私が間違っていることは分かりません。どんな助けもありがとう。
[定義されていない参照/未解決の外部シンボルのエラーとは何ですか?どうすれば修正できますか?](http://stackoverflow.com/questions/12573816/what-is-an-undefined-reference-unresolved-外部記号エラー・アンド・ハウ・ド・イ・フィックス) – Danh