Problem mit der Namensgebung von Objekten von Klassen

Na also, sags doch! :) :) :) :)

Eine Möglichkeit ist es, dies mit einem "static attribut" zu lösen.

deine Klasse:
Code:
class CArchiv
{
public:
    CArchiv(){ m_iCDID++; };  //hier wird die nummer inkrementiert     
    static int m_iCDID;          //statisches Attribut
}

main.cpp:
Code:
int CArchiv::m_iCDID = 0;   //WICHTIG: Attribut muss initialisiert werden

int main()
{
 ...
}

Hoffe geholfen zu haben.
Gruß
 
Ahhhhh....

Ihr könnt mich für blöd halten oder was auch immer ihr wollt. Ich bekomm das nicht zum laufen! Ich hab meine .cpp mal in den Anhang, hoffe ihr werdet daraus schlau.

Danke,
Daniel

PS: Das mit "static attribut" scheint wohl zu funktionieren wenn der Rest funktioniet...
 

Anhänge

  • test2.zip
    761 Bytes · Aufrufe: 20
Du übergibst hier ein char-Array, aber von Konstruktor wird ein einzelnes char erwartet!
Da char-Array char-Pointer entspricht, würd ich das, wenn du bei char als Datentyp bleiben willst, so lösen:

Code:
class disk{
     public:
          disk(char* be);
          ~disk();
          char* get_its_id() const;
          char* get_its_beschr() const;
          void set_its_beschr(char* bes);
          static UNSHO its_id;
     private:
          // its_id;
          char* its_beschr;
};
 
Zuletzt bearbeitet:
Hier einmal die vollständige Lösung im Anhang.

Anstatt von char könntest du auch std::string nutzen.
Dann würde der ganze Kram in Sachen speicherreservierung wegfallen. Außerdem hättest
du noch ein paar nützliche Funktionen gratis dazu! :D
 

Anhänge

  • test2.zip
    1,1 KB · Aufrufe: 21
Moin Moin,
Also, jetzt haben wir ein Problem gelöst, aber das eigentliche noch nicht.
@c coder: du meintest ich solle eine variable namens "disk_names" nehmen.
Code:
     char disk_namen[20];                 //meintest du so? (funktioniert nicht)
     cin >> disk_namen;
     disk disk_namen(besch);
so hab ichs auch mal probiert, aber das ist alles das gleiche problem:
Code:
     enum disk_names{aa, bb, cc, name};          //Funktioniert auch nicht...
     UNSHO array_name[name] = {10, 20, 30};
     cin >> besch;
     disk array_name[bb](besch);

wie kann ich außer so:
Code:
disk DiskOne(besch);
einem Objekt einen Namen geben?
 
Zuletzt bearbeitet:
Nur so nebenbei: Wenn du von einer Variable spricht, die als Datentyp eine Klasse hat, spricht man dabei von einer Instanz.

Also:
Was du haben willst ist, wenn ich dich richtig verstehe eine Klasse, die den Namen einer CD, sowie eine Beschreibung speichern kann.
Grob sieht das so aus:
Code:
class Disk{
public:
  char* get_its_beschr();
  char* get_its_name();
  void   set_its_beschr(char* its_besch);
  void   set_its_name((char* its_name);
private:
  char* m_szItsBeschr;
  char* m_szItsName;
};

jetzt möchtest du mehre CDs eingeben, sagen wir mal, der Einfachheit halber, bis zu 20 Stück:
Code:
#define MAX_DISK_ANZAHL 20

void main()
{
  Disk CDSpeicher[MAX_DISK_ANZAHL];
  //Alle Disks einlesen
  for(int i=0; i<MAX_DISK_ANZAHL; i++)
  {
    char* beschr;
    char* name;
    cin >> beschr;
    cin >> name;
    CDSpeicher[i].set_its_beschr(beschr);
    CDSpeicher[i].set_its_name(name);
  }
}

Jetzt dürfte alles klar sein, hoffe ich. Ansonsten, einfach nachfragen
 
Zuletzt bearbeitet:
Danke, danke, jetzt bin ich viel weiter! :p

Jetzt hab ich aber ein anderes Problem, und bevor ich ein neues Thema eröffne...

Ich möchte einem char Array einen neuen Wert zuweisen.

Code:
char temp[50];
cin >> temp;  //man gibt irgendwas ein, alles gut
temp = "etwas";
...
funktioniert nicht, hab ich was Anderes probiert:
Code:
char temp[50];
char temp2[50] = "etwas";
cin >> temp;
temp = temp2;
wieder nichts...

wie kann ich das machen?

Danke, Daniel
 
Zurück