2015-04-30 3 views
0

В основном я пытаюсь создать вектор объектов, но мне нужно создать объекты с информацией, считанной из файла, с помощью перегруженного оператора потока ввода для моего класса Voter.Как создать вектор объектов во время чтения из файла? [C++]

главная:

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

using namespace std; 

int main(int argc, char** argv) { 
    int i = 0; 
    int idNumber; 
    string firstName; 
    string lastName; 
    string hasVoted; 
    vector<Voter> VoterVector; 
    ifstream inFile; 
    inFile.open("voters.txt"); 
    if(!inFile){ 
     cout << "Unable to open voters.txt" << endl; 
    } 
    inFile >> idNumber >> firstName >> lastName >> hasVoted; 
    while(inFile) { 
     Voter temp(); 
     temp >> idNumber >> firstName >> lastName >> hasVoted; 
     VoterVector.push_back(temp); 
     inFile >> idNumber >> firstName >> lastName >> hasVoted; 
    } 
    return 0; 
} 

Избиратель Класс:

#ifndef VOTER_H 
#define VOTER_H 
#include <string> 
using namespace std; 

class Voter { 
public: 
    Voter(); 
    virtual ~Voter(); 
    friend istream &operator>>(istream &in, Voter &v); 
    friend ostream &operator<<(ostream &out, Voter &v); 
private: 
    int idNumber; 
    string firstName; 
    string lastName; 
    string hasVoted; 
}; 
Voter::Voter() { 
    this->idNumber = 0; 
    this->firstName = '-none-'; 
    this->lastName = '-none-'; 
    this->hasVoted = 'FALSE'; 
} 

Voter::~Voter() { 
} 

istream &operator>>(istream &in, Voter &v) { 
    in >> v.idNumber >> v.firstName >> v.lastName >> v.hasVoted; 
    return in; 
} 

ostream &operator<<(ostream &out, Voter &v) { 
    out << v.idNumber << endl << v.firstName << endl << v.lastName << endl  << v.hasVoted << endl; 
    return out; 
} 

Я продолжаю получать ошибки с тем, как я создаю объекты и поместить их в вектор. Я уверен, что моя перегрузка и чтение из файла выполнены правильно, просто не уверен, что вы правильно настроили вектор объектов. Любая помощь приветствуется. Благодаря!

+1

Это было бы: 'Избиратель темп; while (inFile >> temp) {VoterVector.push_back (temp); } '. – 0x499602D2

+0

@ 0x499602D2: Я собираюсь начать _flagging_ ответы в комментариях. Вы, очевидно, не получаете сообщение. –

+0

@LightningRacisinObrit Ой! Получил меня снова! лол – 0x499602D2

ответ

2
Voter temp(); 

Это неправильно. Он объявляет функцию.

Вот как создать Voter объект:

Voter temp; 

Кроме того, вы делаете странные вещи с этим >> оператором.

Почему не просто:

int main() 
{ 
    vector<Voter> voterVector; 
    ifstream inFile("voters.txt"); 

    if (!inFile) { 
     cout << "Unable to open voters.txt" << endl; 
    } 

    Voter temp; 
    while (inFile >> temp) { 
     voterVector.push_back(temp); 
    } 
} 
Смежные вопросы