tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
3
ZUGRIFFE
3026
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    mæstrø Tutorials.de Gastzugang
    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
     

  2. #2
    Avatar von Turri
    Turri Turri ist offline Mitglied Brokat
    Registriert seit
    Jun 2005
    Beiträge
    354
    Hallo,

    ich würde das wie folgt bewerkstelligen...

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    
    #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 :
    1
    2
    3
    4
    
    void Dateiverwaltung::einfuegen(Datei* datei)
    {
        dateiliste.push_back(datei);
    }

    Dann machst du als Aufruf immer

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

    Dateiverwaltung aber nur einmal anlegen

    MfG Turri
     

  3. #3
    mæstrø Tutorials.de Gastzugang
    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
     

  4. #4
    Avatar von Turri
    Turri Turri ist offline Mitglied Brokat
    Registriert seit
    Jun 2005
    Beiträge
    354
    Du solltest die Klasse "Datei" noch erweitern, um mindestens die Funktionen GetName, GetPfad und GetInhalt.
    Code :
    1
    2
    3
    4
    
    std::string Datei::GetPfad()
    {
      return pfad;
    }

    Code :
    1
    2
    3
    4
    5
    6
    
    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
     

Ähnliche Themen

  1. GUI designen oder Klassen erstellen - wie fangt ihr an?
    Von dark_ghost im Forum Coders Talk
    Antworten: 3
    Letzter Beitrag: 20.09.09, 19:45
  2. Struct in verschiedenen Klassen nutzen
    Von Ozzy Ozborn im Forum C/C++
    Antworten: 1
    Letzter Beitrag: 12.11.07, 11:12
  3. dynamische variablen in klassen
    Von Tobstar28 im Forum PHP
    Antworten: 5
    Letzter Beitrag: 17.11.06, 11:20
  4. Antworten: 7
    Letzter Beitrag: 13.12.05, 16:55
  5. Dynamische Instantiierung von Klassen möglich?
    Von JaguarGorgone im Forum PHP
    Antworten: 2
    Letzter Beitrag: 14.11.05, 15:03