Ich habe einige Probleme beim Lösen einer Aufgabe aus der Klasse. Mein Algorithmus zur Lösung der Probleme funktioniert gut, aber mein Problem ist das Lesen von Daten aus 3 verschiedenen Textdateien in 2 verschiedene Klassen.C++ Mit verschiedenen Unterklassen basierend auf Teil der Eingabe
Nun ist die erste Textdatei "hours.txt" gibt einen String-ID und Stunde int, etwa so:
adam1;170
eve2;170
so von einem ";" getrennt. Die nächste Datei enthält die gleiche ID wie zuvor und Name, Taxid, Typ und je nach Typ: Lohn wenn PH, oder Gehalt und Ovtwage wenn IS.
adam1;Adam Driver;12345678;PH;5;
eve2;Eve Assistant;23456789;IS;650;10
Die 3. Datei enthält nur das int 160, das als generalWorkingHours definiert ist. Jetzt, wo meine Probleme entstehen. Ich habe Erfahrung im Lesen von Daten aus 1 Datei in 1 Klasse, aber in diesem Fall muss ich Daten zu 2 Klassen, ph lesen und hängt von der Art der IDs ab (adam1 und eve2). Ich habe zwei Klassen wie folgt zur Verfügung gestellt:
#ifndef IS_H
#define IS_H
#include "Employee.h"
#include <iostream>
using namespace std;
class is: public Employee
{
public:
is();
virtual ~is();
void setSalary(int salary);
int getSalary();
void setOvtWage(int ovtWage);
int getOvtWage();
protected:
private:
int salary;
int ovtWage;
};
#endif // IS_H
und
#ifndef PH_H
#define PH_H
#include "Employee.h"
#include <iostream>
using namespace std;
class ph: public Employee
{
public:
ph();
virtual ~ph();
void setWage(int wage);
int getWage();
protected:
private:
int wage;
};
#endif // PH_H
Beide Klassen, die Öffentlichkeit „Mitarbeiter“ enthalten
#ifndef EMPLOYEE_H
#define EMPLOYEE_H
#include <iostream>
using namespace std;
class Employee
{
public:
Employee();
virtual ~Employee();
void setId(string id);
string getId();
void setName(string name);
string getName();
void setTaxId(string taxid);
string getTaxId();
void setType(string type);
string getType();
void setHours(int hours);
int getHours();
protected:
private:
string id;
string name;
string taxid;
string type;
int hours;
};
#endif // EMPLOYEE_H
Nun, normalerweise würde ich eine Funktion erstellen, um lese eine Datei und analysiere jede Zeile wie folgt:
void Resolver::parseTextLine(string tmp, int & carCnt, carList X[]){
std::size_t found;
found=tmp.find(";");
if (found!=string::npos) {
X[carCnt].point=tmp.substr(0,found);
tmp=tmp.substr(found+1);
}
found=tmp.find(";");
if (found!=string::npos) {
X[carCnt].license=tmp.substr(0,found);
tmp=tmp.substr(found+1);
}
found=tmp.find(";");
if (found!=string::npos) {
X[carCnt].time=atoi(tmp.substr(0,found).c_str());
tmp=tmp.substr(found+1);
}
carCnt++;
}
void Resolver::readDataFromFiles(string carFile, int & carCnt, carList X[]){
carCnt=0;
ifstream finS(carFile.c_str(),ios::in);
bool first=true;
while (!finS.eof()) {
string tmp="";
getline(finS,tmp);
if (tmp!="") {
if (first) {
first=!first;
} else {
parseTextLine(tmp,carCnt,X);
}
}
}
finS.close();
}
HINWEIS: Dies ist nur eine Idee, wie ich versuche, es zu lösen, aber ich habe keine Erfahrung mit mehreren Dateien und Klassen. Alle Funktionen sind vorgefertigt und ich muss sie nur irgendwie zusammenfügen.
Könnten Sie zeigen uns die Klasse Employee bitte?Es sieht so aus, als hättest du uns die ph-Klasse zweimal gegeben. –
Oh..Im sorry, es sollte jetzt behoben werden. – Jonaswg
Was genau ist dein Problem? Was ist los mit dem 'if (id == id1) employee = new ist; sonst Mitarbeiter = neuer ph; '? –