2012-11-13 2 views
1

C++을 배우고 있으며 Date에 값을 설정하려고하는 간단한 Date 클래스가 있습니다. 내가 코드를 컴파일 할 때 그러나, 나는 오류 메시지가 Date.hC++ 오류 - 아키텍처 x86_64에 대한 정의되지 않은 기호 :

class Date{ 
private: 
    int month; 
    int day; 
    int year; 

public: 
    Date(); 
    void setDate(int m, int d, int y); 

}; 

및 Date.cpp

#include "Date.h" 

Date::Date() 
{ 
    month = 1; 
    day = 1; 
    year = 80; 

}; 

void Date :: setDate(int m1, int d1, int y1){ 
    month = m1; 
    day = d1; 
    year = y1; 
}; 

-

다음은 소스 코드 파일입니다 -

Undefined symbols for architecture x86_64: 
    "_main", referenced from: 
     start in crt1.10.6.o 
ld: symbol(s) not found for architecture x86_64 
collect2: ld returned 1 exit status 

누군가 제발 도와 줄 수 있습니까?

감사합니다.

답변

5

주 기능이 누락되었습니다. 이 파일을 main.cpp와 같은 새 파일에 추가하고 컴파일 및 링크시 포함 시키거나 다른 .cpp 파일에 추가하십시오.

int main(int argc, char *argv[]) { } 

그리고 중괄호에서 프로그램을 실행하는 코드를 넣습니다.

1

모든 C/C++ 프로그램에는 무조건 프로그램 실행의 진입 점 역할을하는 main 함수가 있어야합니다.

int main(int argc, char** argv) { 
    Date d; 
    d.setDate(11, 19, 1984); 

    /* do something with this date... */ 

    return 0; 
} 

일반적인 규칙과 main.cppDate.cpp 모두 컴파일과 동일한 대상에 이진 연계되어,이 경우, main.cc/main.cpp이 배치되도록하고있다. 링커는 main(int, char**)을 해결할 수 없으면 진행하지 않습니다. 이것이 분명하다면 링커 명령 행을 확인하여 main을 포함하는 소스/오브젝트 파일이 포함되어 있는지 확인하십시오.

또한 무작위 C++ 모범 사례 가이드 라인 : setDate이하는 인수를 사용하고 초기화 자 목록을 통해 멤버 변수에 할당하는 기본이 아닌 생성자가 있어야합니다. 이 경우 기본 생성자 (인수 없음)는 구체적인 날짜 클래스에 대해 거의 의미가 없습니다.

관련 문제