Wie kann ich einer Instanz einen Namen geben?
-
Hi
ich möchte einer Klasse, die Addressdaten verwalten kann, einen Namen geben, damit ich alle erzeugten Instanzen in eine Liste schreiben kann und die einzelnen Instanzen anhand von ihrem Namen identifizieren kann.
hier meine klasse
#include <string.h> struct AddressData{ char Street[40]; char Number[10]; char Town[40]; char Postcode[10]; }; struct PersonData{ char Firstname[40]; char Lastname[40]; struct AddressData Address; }; class CContact { public: CContact(); virtual ~CContact(); void SetFirstname(const char* aFirstname); void SetLastname(const char* aLastname); void SetStreet(const char* aStreet); void SetNumber(const char* aNumber); void SetTown(const char* aTown); void SetPostcode(const char* aPostcode); void SaveToFile(const char* Filename); void LoadFromFile(const char* Filename); const char* GetCntName(); void SetCntName(const char* aCntName); private: struct PersonData Person; char CntName[20]; //<-- das soll der Name der Instanz sein! };
Ich habe mir gedacht, dass ich einfach eine Funktion SetCntName schreibe, die eine konstante Zeichenkette als Parameter bekommt und den Wert dann an CntName übergibt.
Mein Problem bei der Sache: Ich möchte, dass der Name hinterher dieses Format hat: Contact[index]:Vorname
wobei index eine Zahl sein soll und Vorname eine Zeichenkette. Kann mir jemand sagen, wie ich so eine Zeichenkette an SetCntName übergeben kann?Gruß
Michael
-
Dieser Thread wurde von Moderator/in Unix-Tom aus dem Forum MFC mit dem Visual C++ in das Forum C++ verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Das klingt so, als wolltest du, dass deine Klasse einen Teil der benennung
übernimmet. Die Bennung von Vorname kannst du nach außerhalb der Klasse verlagern,
den Rest würde ich Klassenintern regeln: Sonst bist du zu Abhängig vom Aufrufer
der Klasse, was die korrekte Benutzung angeht.Vorschlag:
class foo { private: char name[200]; static unsigned int index; public: foo(char* vorname) { sprintf(name,"foo[%d]:%s", index, vorname); index++; } } foo::index = 0;
Je nach Verwendungszweck von foo kannst du das ganze aber (fast) beliebig anders
reglen