2013-03-29 5 views
0

정의되지 않은 참조 오류에 문제가 있습니다.정의되지 않은 참조 오류

Voter.h

#include <iostream> 
#ifndef VOTER_H 
#define VOTER_H 

using namespace std; 
class Voter 
{ 
     private: 
       string ID; 
       int nr_times_voted; 
       bool voted; 

     public: 
      Voter() 
      { 
       ID = " "; 
       nr_times_voted = 0; 
       voted = false; 
      } 

      Voter(string newVoter) 
      { 
       ID = "0000"; 
       nr_times_voted = 0; 
       voted = false; 
      } 

       ~Voter();  
       string getID(); 
       int getnr_times_voted(); 
       bool getvoted(); 
       void set_voted() 
       { 
       voted = true; 
       } 

       friend Voter operator++(Voter& V); 
       friend istream & operator>>(istream & ins, Voter & V); 
       friend ostream & operator<<(ostream & outs, Voter & V); 
}; 
#endif 

ClassVoter.cpp

: 나는 피로 물들 데브 C++ 4.9

내 코드를 사용하고

[Linker error] undefined reference to `operator>>(std::istream&, Voter&)' 
[Linker error] undefined reference to `Voter::~Voter()' 
[Linker error] undefined reference to `Voter::~Voter()' 
ld returned 1 exit status 

: 나는 다음과 같은 오류를 얻을 수

#include "Voter.h" 
    #include <iostream> 
    #include <string> 

    using namespace std; 

    //Accessors to retrieve data from each of the member variables 
    string Voter:: getID() 
    { 
     return ID; 
    } 

    int Voter:: getnr_times_voted() 
    { 
     return nr_times_voted; 
    } 

    bool Voter:: getvoted() 
    { 
     return voted; 
    } 

    //destructor 
    Voter::~Voter() 
    {} 

    void operator++(voted & V) 
    { 
     voted++; 
     return voted;  
    } 

    istream & operator >>(istream & ins, Voter & V) 
    { 
     ins >> V.ID >> V.nr_times_voted >> V.voted; 
    } 


    ostream & operator <<(ostream & outs, Voter & V) 
    { 
     outs << " Voters that want to vote: " << endl; 
     outs << V.ID << endl; 
     return outs; 
    } 

TestVoter.cpp

#include "Voter.h" 
#include <iostream> 
#include <fstream> 
#include <cstdlib> 
#include <string> 

using namespace std; 

int main() 
{ 
    ifstream infile; 
    ofstream outfile; 
    Voter ID; 

    cout << "Enter your Voter ID: "; 
    cin >> ID; 

    infile.open("VotersRoll.dat"); 
    outfile.open("UpdatedVoters.dat"); 

    infile.close(); 
    outfile.close(); 

    system("pause"); 
    return 0; 
} 
+1

: 대신

g++ main.cpp; 

: g의 ++ 컴파일러와

, 이것은 당신이이 같은 명령을 제공하고 의미 '. 해야 할 것. – gspr

+0

"[링커 오류] 연산자 >> (std :: istream &, Voter &) '에 대한 정의되지 않은 참조 앞에 줄을 게시 할 수 있습니까?" – MLeblanc

+0

ClassVoter.o 개체 파일을 최종 이미지에 연결해보십시오. – WhozCraig

답변

4

당신은 거의 확실 빌드 과정에서 ClassVoter.cpp를 포함 잊고있다.

나는 Bloodshed dev C++를 사용한 적이 없으므로 단계별 지침을 제공 할 수 없습니다.

+1

개체 파일 'ClassVoter.cpp'를 컴파일하여 생성합니까? – gspr

+1

+1, 완전히 컴파일하지 않은 경우에도 마찬가지입니다. – WhozCraig

1

undefined reference은 링커가 실행 파일을 만들기 위해 함께 연결하는 파일에서 프로그램이 사용하는 일부 기능의 정의를 찾을 수 없음을 의미합니다. 당신은 ClassVoter.cpp`에서 생성 된 오브젝트 파일로 연결하지 않을

g++ main.cpp ClassVoter.cpp;