2013-05-15 6 views
1

이 문제는 이전에 있었지만 어떤 솔루션을 찾지 못했습니다. 그래서 - 난 비주얼 2010 스튜디오 :오류 LNK2019 : _main 함수에서 참조 된 확인되지 않은 외부 기호

오류 LNK2001에서이 오류를 받고 있어요 : 확인되지 않은 외부 기호 "클래스 Czas __cdecl 데이터 (무효)"

(데이터 @@ YA AVCzas @@ XZ?)

나는 main() 함수를 가지고 있고, 나는 propetites에서 콘솔을 설정했다.

이 내 코드입니다 :

#include "Czas.h" 
#include <iostream> 
using namespace std; 

    int dzien; 
    int miesiac; 
    int rok; 
    int Czas::Dzien() const 
    { 
     return dzien; 
    } 
    int Czas::Miesiac() const 
    { 
     return miesiac; 
    } 
    int Czas::Rok() const 
    { 
     return rok; 
    } 
    Czas::Czas(int d=1, int m=1, int r=1970) 
    { 
     dzien = d; 
     miesiac = m; 
     rok = r; 
     koryguj(); 
    } 
    void Czas::Ustaw (int d, int m, int r) 
    { 
     dzien = d; 
     miesiac = m; 
     rok = r; 
    } 
    void Czas::Wypisz() const 
    { 
     //wypisujemy dzien; 
     if (dzien<10) 
      cout<<"0"<<dzien<<"."; 
     else 
      cout<<dzien<<"."; 
     //wypisujemy miesiac 
     if (miesiac<10) 
      cout<<"0"<<miesiac<<"."; 
     else 
      cout<<miesiac<<"."; 
     //wypisujemy rok 
      cout<<rok; 
    } 
    void Czas::Wpisz() 
    { 
     cin>>dzien; 
     cin>>miesiac; 
     cin>>rok; 
     koryguj(); 
    } 
    void Czas::koryguj() 
    { 
     if (dzien>31) 
      dzien = 31; 
     if (dzien<1) 
      dzien = 1; 

     if (miesiac>12) 
      miesiac = 12; 
     if (miesiac<1) 
      miesiac = 1; 

    } 
    int Czas::porownaj (const Czas& wzor) const 
    { 
     if (dzien == wzor.Dzien() && miesiac == wzor.Miesiac() && rok == wzor.Rok()) 
      return 1; 
     else 
      return 0; 
    } 

마지막 MAIN.CPP Czas.cpp

Czas.h

#ifndef CZAS_H 
#define CZAS_H 
class Czas{ 
private: 
    int dzien; 
    int miesiac; 
    int rok; 
public: 
    int Dzien() const; 
    int Miesiac() const; 
    int Rok() const; 
    Czas(int dl, int m, int r); 
    void Ustaw (int d, int m, int r); 
    void Wypisz() const; 
    void Wpisz(); 
    void koryguj(); 
    int porownaj (const Czas& wzor) const; 
}; 
#endif 

내가 잘못이 무엇

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

using namespace std; 
int main(int argc, char **argv) 
{ 
    int flaga=1, flaga2=0; 
    Czas data(); 
    cout<<"1 - Wpisz date\n2 - Wypisz date\n3 - Porownaj\nx - wyjscie"; 
    while (flaga == 1) 
    { 
     fflush(stdin); 
     switch (getchar()) 
     { 
     case '1': 
      { 
       data().Wpisz(); 
       flaga2=1; 
       break; 
      } 
     case '2': 
      { 
       if (flaga2=0) 
        cout<<"Trzeba najpierw wpisac date!"; 
       else 
     //   data().Wypisz(); 
       break; 
      } 
     case '3': 
      { 
       if (flaga2=0) 
        cout<<"Trzeba najpierw wpisac date!"; 
       else 
       // czas().porownaj 
       break; 
      } 
     case 'x': 
      { 
       flaga=0; 
       break; 
      } 
     default: 
      { 
       cout<<"klawisz nieobslugiwany"; 
       break; 
      } 
     } 
    } 
    return 0; 
} 

이리?

+0

프로젝트에 Czas.cpp를 추가 했습니까? – user1764961

+0

예. 그리고 문제가 해결되었습니다. Sftrabbit 그것을 했어 ^^. – user1916778

답변

3
Czas data(); 

는이 인수를하지 않으며 Czas을 반환 data라는 함수를 선언합니다.

data().Wpisz(); 
// ^^ Remove 

에서 : 또한이 기능하지 않기 때문에 당신이이 줄 data 후 괄호를 제거해야 의미

Czas data; 

: 나는 당신이 실제로 Czas 오브젝트과 같이 구성 기본하려는 생각 또한 생성자의 기본 인수를 헤더 파일로 옮겨야합니다.

Czas(int dl = 1, int m = 1, int r = 1970); 

기본 인수는 반드시 visib 파일을 헤더를 포함하는 모든 코드에 전달하여 인수없이 호출 할 수 있음을 알 수 있습니다.

+0

VS2010에서 경고 메시지를 보내면 안됩니까? – user1764961

+0

@ user1764961 잘 모르겠지만 VS를 사용하지 않습니다. 그것은 할 수는 있지만해야 할 이유가 없습니다. –

+0

그런 식으로 구현 된 경우이를 수행해야합니다. :-) – user1764961

관련 문제