0

未定義の参照エラーに問題があります。次のエラーが表示されます。

[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 

Bloodshed dev C++ 4.9 を使用しています

私のコード:

投票者.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

    #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;
} 
4

2 に答える 2

4

ほとんどの場合ClassVoter.cpp、ビルド プロセスに含めることを忘れています。

私は Bloodshed dev C++ を使用したことがないため、段階的な手順を説明することはできません。

于 2013-03-29T17:00:33.663 に答える
1

undefined referenceリンカーは、実行可能ファイルを作成するためにリンクしているファイルのいずれかで、プログラムによって使用される関数の定義を見つけることができないことを意味します。

g++ コンパイラでは、これは次のようなコマンドを与えることを意味します。

g++ main.cpp;

それ以外の:

g++ main.cpp ClassVoter.cpp;
于 2013-03-29T17:06:01.390 に答える