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 开发 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 开发 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 回答