2014-02-23 3 views
2

Xcode에서 C++을 코딩하는 법을 배우고 있습니다. Joe Pitt-Francis와 Jonathan Whiteley의 책에서이 예제를 수행하고 있습니다. 나는 complie 할 때, 다음과 같은아키텍처에 대한 정의되지 않은 기호 x86_64 : Xcode 5 문제

코드는

Book.ccp

#include "Book.hpp" 
#include <iostream> 


int main (int argc, char* argv[]) 
{ 
Book good_read; 

good_read.author = "Lewis Carroll"; 
good_read.title = "Alice "; 
good_read.publisher = "MA"; 
good_read.price = 199; 
good_read.format = "hardback"; 
good_read.SetYearOfPublication(1787); 

std::cout << "Year of publication of " << good_read.title << " is " << good_read.GetYearOfPublication() << "\n"; 

Book another_book(good_read); 

Book an_extra_book ("the magic"); 

return 0; 

} 

Book.hpp

#ifndef book_Header_h 
#define book_Header_h 

#include <string> 
class Book 
{ 
public: 
Book(); 
Book (const Book& otherBook); 
Book (std::string bookTitle); 
std::string author, title, publisher, format; 
int price; 
void SetYearOfPublication (int year); 
int GetYearOfPublication() const; 
private: 
int mYearOfPublication; 
}; 
#endif 

을 "C++로 과학 컴퓨팅 가이드", 나는 다음과있어 오류. 여러 포럼에서

Undefined symbols for architecture x86_64: 
"Book::SetYearOfPublication(int)", referenced from: 
_main in Book.o 
"Book::Book(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >)", referenced from: 
    _main in Book.o 
"Book::Book(Book const&)", referenced from: 
    _main in Book.o 
    "Book::Book()", referenced from: 
    _main in Book.o 
    "Book::GetYearOfPublication() const", referenced from: 
    _main in Book.o 
ld: symbol(s) not found for architecture x86_64 
clang: error: linker command failed with exit code 1 (use -v to see invocation) 

그것은 문제가 엑스 코드는 모든 파일을 컴파일되지 않는 것입니다,하지만 난 그것을 해결하는 방법에 대한 어떤 생각, 어떤 제안을 환영합니다 이상입니다가 없다고 말한다.

답변

3

Book::SetYearOfPublication()Book.hpp에 있지만 사용자 정의하지 마십시오. 구현 파일에서 다음과 같이해야합니다.

void Book::SetYearOfPublication (int year) { 
    // TODO: add code for setting the publication year 
} 
+0

어떻게 정의 할 수 있습니까? 나는 문제가 무엇인지 이해하지 못한다. 나는 Book.cpp에서 정의하지 않았다. "good_read.SetYearOfPublication (1787);"? –

+0

'good_read.SetYearOfPublication (1787)'* 함수를 호출하지만 * 정의 *하지 않습니다. – Oswald

+0

감사합니다. 주제를 검토하여 정의하는 방법을 이해합니다. –

관련 문제