Dynamische Klassen erstellen .. oder doch struct?

  • Themenstarter Themenstarter mæstrø
  • Beginndatum Beginndatum
M

mæstrø

Hallo,

Bin eher neu in C++ und hab folgendes Problem:

Ich will in ein Programm mehrere Dateien reinladen, eine bis einige hundert, nun will ich die Informationen zur Datei (Pfad, Name, Inhalt etc.) in einer eigenen Klasse speichern. Also für jede Datei will ich eine eigene Klasse die ich aus einer Beispiel-Klasse erstelle.

Also z.B.:

NewFile^ File1 = gcnew NewFile;

wobei NewFile die Beispiel-Klasse ist und File1 die Eigenschaften von dieser übernimmt.

nur sollte der name "File1" dynamisch erstellt werden ... d.h. wenn ich eine 2te Datei reinlade dann soll er z.B. "File" + "2" = "File2" dort hinschreiben da ich ja nicht mehrere hundert klassen im vorraus definieren kann.

oder geht das besser mit struct?

ich hoffe ich habe mich klar ausgedrückt und danke für eure antworten

Ps.: arbeite mit VC++ 2005 Express

mfg Maestro
 
Hallo,

ich würde das wie folgt bewerkstelligen...

Code:
#include <list>
#include <iostream>

class Datei
{
  private:
    std::string name;
    std::string pfad;
    std::string inhalt;
    ...

  public:
    Datei(){}
    Datei(std::string name, std::string pfad, std::string inhalt);
    ...
}

class Dateiverwaltung
{
  private:
    list<Datei*> dateiliste;  // hier kannst du einige 100 Dateien verwalten

  public:
    ....
    void einfuegen(Datei*);
    ...
}

cpp
Code:
void Dateiverwaltung::einfuegen(Datei* datei)
{
    dateiliste.push_back(datei);
}

Dann machst du als Aufruf immer

Code:
Dateiverwaltung* dv = new Dateiverwaltung();
Datei* datei = new Datei;
dv->einfuegen(datei);

Dateiverwaltung aber nur einmal anlegen ;)

MfG Turri
 
Das hat mir schon mal weitergeholfen, danke

hab aber noch immer das problem das ich die pfade als string array habe und ich nicht weiß wie ich so einen pfad, bzw den dateinamen asl string aus dem pfad, in "Datei* datei = new Datei;" als "datei" verwenden kann. oder habe ich da etwas falsch verstanden?

mfg
 
Du solltest die Klasse "Datei" noch erweitern, um mindestens die Funktionen GetName, GetPfad und GetInhalt.
Code:
std::string Datei::GetPfad()
{
  return pfad;
}

Code:
Dateiverwaltung* dv = new Dateiverwaltung();
Datei* datei = new Datei("deinName","deinPfad","deinInhalt");
dv->einfuegen(datei);
...
// wenn du den Pfad wieder nutzen willst....
std::string path = datei->GetPfad();

Solltest du noch etwas mehr erweitern... ist aber nur ein Vorschlag ;-)

MfG Turri
 
Zurück