Направление требует указатель операнда

Я получаю эту ошибку, Indirection требует указатель операнда (‘недействительный int’) в этом коде, я думаю, что я неправильно использую empPtr в этом коде, но я не уверен.

Заранее спасибо, ребята.

Я также включу мои другие классы по этой ссылке. https://gist.github.com/anonymous/08ff6c5284c179c9a323

Мой входной текстовый файл выглядит следующим образом.

123,John,Brown,125 Prarie Street,Staunton,IL,62088
124,Matt,Larson,126 Hudson Road,Edwardsville,IL,62025
125,Joe,Baratta,1542 Elizabeth Road,Highland,IL,62088
126,Kristin,Killebrew,123 Prewitt Drive,Alton,IL,62026
127,Tyrone,Meyer,street,999 Orchard Lane,Livingston,62088

Вот мой main.cpp.

#include <iostream>
#include <string>
#include <fstream>
#include "Employee.h"
using namespace std;

bool openFileForReading(ifstream& fin, const string& filename);
bool openFileForWriting(ofstream& fout, const string& filename);

int readFromFile(ifstream& in, Employee empArray[]);

void writeToFile(ofstream& out, const Employee empArray[], const int numberofEmployees);

int main() {

ifstream fin;
ofstream fout;

if(!openFileForReading(fin, "employeesIn.txt")) {
cerr << "Error opening employeesIn.txt for reading." << endl;
exit(1);
}

if(!openFileForWriting(fout, "employeesOut.txt")) {
cerr << "Error opeing employeesOut.txt for writing." << endl;
exit(1);
}

Employee employeeArray[50];

int employeeCount = readFromFile(fin, employeeArray);

fin.close();

writeToFile(fout, employeeArray, employeeCount);

fout.close();

cout << "Program successful." << endl << endl;return 0;
}

bool openFileForReading(ifstream& fin, const string& filename) {
fin.open("employeesIn.txt");

return (fin.is_open());
}

bool openFileForWriting(ofstream& fout, const string& filename) {
fout.open("employeesOut.txt");

return (fout.is_open());
}

int readFromFile(ifstream& in, Employee empArray[]) {
int temp = 0;
string eidText;
string first;
string last;
string street;
string city;
string state;
string zipcode;

while(!in.eof()) {
getline(in, eidText, ',');
getline(in, first, ',');
getline(in, last, ',');
getline(in, street, ',');
getline(in, city, ',');
getline(in, state, ',');
getline(in, zipcode);

empArray[temp].setEid(stoi(eidText));
empArray[temp].setName(first, last);
empArray[temp].setAddress(street, city, state, zipcode);

temp++;
}

return temp;
}

void writeToFile(ofstream& out, const Employee empArray[], const int numberOfEmployees) {

for (int i = 0; i < numberOfEmployees; i++){
out << "Employee Record: " << empArray[i].getEid()
<< endl
<< "Name: " << empArray[i].getName()
<< endl
<< "Home Address: " << empArray[i].getAddress()
<< endl
<< endl;
}
}

3

Решение

У тебя есть

int empPtr = 0;

с последующим

(*empPtr).setEid(stoi(eidText));

что явно является причиной этой ошибки.

2

Другие решения

Эта строка неверна.

Employee empPtr = employeeArray[50];

Максимальный действительный индекс для employeeArray является 49,

Чтобы получить первый элемент массива, используйте:

Employee empPtr = employeeArray[0];

Чтобы получить последний элемент массива, используйте:

Employee empPtr = employeeArray[49];

Более подробную информацию о доступе к массивам C и C ++ можно найти по адресу http://www.augustcouncil.com/~tgibson/tutorial/arr.html а также http://www.tutorialspoint.com/cprogramming/c_arrays.htm.

1

По вопросам рекламы [email protected]