Obj dynamisch erzeugen?
-
Hi Leute,
bin neu hier und in C++ ein Anfänger und jetzt steh ich vor einem großen Problem.es geht um Folgendes:
ich lese aus einer Datei einen String ein, nehm mir den String und kürze ihn auf meine benötigte Form.
Mein String: M1(UP,r0,r1,w1,w0...) der Mittelteil ist beliebig lang.
Jetzt würde ich auch dem String gerne ein Objekt erzeugen.Das Objekt ist von der Klasse March und hat 3 Werte.
string UPDWN; auf Bsp oben sollte nun UP drin stehen
vector<string> RW; auf Bsp. oben [r0,r1,w1,w0]
string Last_write; auf Bsp. w0jetzt würde ich gerne den Konstruktor aufrufen, allerdings variabel d.h. aus meinem string sollen alle benötigten angaben abgeleitet werden.
Es soll also aus M1(.....) ein Objekt von Typ March angelegt werden das so aussieht:
March M1(string a). string a ist jetzt natürlich nur noch der Inhalt zwischen den ().Soweit ich das verstanden habe kann ich aber M1 nicht einfach erzeugen z.b. mit
M[i](string a). i ist ein integer.
oder kann ich einfach den string denn ich erhalte also M1(...)
hinter den march setzen und er macht mir das.
also March String und er interpretiert das als March M1(...)Hoff ich konnte mein Problem darstellen ist schwer zu erklären.
mfg .eimer
-
Was spricht denn gegen den std::vector, den du ja offensichtlich schon kennst?
-
Hm... kannst du das mal genauer erklären, das versteh ich jetzt nicht ganz.
Ich möchte ja ein Objekt erzeugen, was kann ich da jetzt mit dem std::vector anfangen?mfg .eimer
-
Indem du ein vector<March> erzeugst. Den kannst du dann mit deinen March-Objekten füllen.
Wenn die Nummern nicht fortlaufend sind, bietet sich auch eine map<string bzw. int,March> an.
-
Vielleicht so...
#include <string> #include <map> class March {...}; void insert_march_into_map( std::string data, std::map<std::string,March> & into) { ... std::string name = ...; // Name aus 'data' extrahieren March & mobj = into[name]; ... Elemente von March-Objekt 'mobj' anhand von 'data' initialisieren. ... }Man müsste nur noch aus dem String namens 'data' den Namen und die Parameter rausfriemeln. Die Funktion fügt der "Map" das Objekt unter dem Namen hinzu (bzw überschreibt das, was vorher unter dem Namen gespeichert war).
kk