Ich arbeite an einem Datenparser für ein Projekt. Ich muß eine Datei analysieren, die zwei verschiedene Arten von Objekten enthalten:Implementieren einer einzelnen Klasse mit anderen Argumenten
Typ-1: sb0 hardrectilinear 4 (0, 0) (0, 82) (199, 82) (199, 0)
Type-1 muss als Klassenblock mit den folgenden Attributen gespeichert werden: BlockID, BlockType, Anzahl_der_Kanten, untere linke, untere rechte, obere linke, obere rechte Ecke.
Typ-2: SB1 softrectangular 24045 0,300 3,000
Typ-2 auch als Klassenblock gespeichert werden muss, mit den folgenden Attributen: BLOCKID, Blocktype, Fläche, min_aspectRatio, max_aspectRatio.
Ist es möglich, eine einzelne Klasse namens "block" mit einem anderen Satz von Argumenten abhängig vom Attribut "BlockType" zu erstellen? Ich habe einen Parser gebaut, aber ich benutzte zwei verschiedene Klassen für jeden BlockType mit sstream.
Ich habe meine Implementierung des Parsers gezeigt, wenn die zu analysierende Textdatei nur Typ-2 enthält. Irgendwelche Ideen, wie ich das mit einer einzigen Klasse machen kann?
SoftBlock.h:
#ifndef SOFTBLOCKLIST_H_
#define SOFTBLOCKLIST_H_
#include <string>
#include <vector>
#include "SoftBlock.h"
#include <fstream>
class SoftBlockList {
public:
SoftBlockList(std::string input_file);
std::vector<SoftBlock> get_softblocklist();
private:
std::vector<SoftBlock> softblocklist;
};
#endif /* SOFTBLOCKLIST_H_ */
SoftBlock.cpp:
#include "SoftBlockList.h"
using namespace std;
SoftBlockList::SoftBlockList(string input_file) {
ifstream filehandle;
filehandle.open(input_file.c_str());
string temp;
while(filehandle.good()){
getline(filehandle, temp);
SoftBlock block(temp);
softblocklist.push_back(block);
}
filehandle.close();
}
vector<SoftBlock> SoftBlockList::get_softblocklist(){return
softblocklist;}
Was bedeutet "Klassenblock"? Bitte geben Sie einen Code an, der zeigt, was Sie erreichen möchten. –
Klingt vielleicht wie ein Anwendungsfall für eine Vorlage. –
Ich meinte eine Klasse namens Block. Ich habe die Frage bearbeitet. Im Grunde muss der Parser die beiden oben genannten Linientypen in einer einzigen Klasse namens "Block" analysieren. Abhängig vom Attribut "BlockType" muss es jedoch unterschiedliche Attribute haben. –