Patrick.Karre Geschrieben 20. Januar 2005 Geschrieben 20. Januar 2005 Hallo Leutz, ich habe eine Klasse in der ich einen Struct deklariere. struct sField { CString Feld1; CString Feld2; CString Field3;} Jetzt möchte ich, das beim Start vom Programm ein Array aus dem struct mit Inhalt erzeugt wird. Damit das Objekt immer komplett neu erzeugt wird, möchte ich dies im Konstruktor machen. Das Array muss für alle Methoden zur Verfügung stehen. Das Array wird wie folgt gefüllt: sField arSearchFields = { {"Wert1", "Wert2", "Wert3",}; {"Wert1", "Wert2", "Wert3",}; {"Wert1", "Wert2", "Wert3",}; {"Wert1", "Wert2", "Wert3",};} Die größe des Array mit den Werten wird erst im Konstruktor festgestellt. Ich bekomme es einfach nicht hin, das Array so zu befüllen, das mit alle Werte in allen Methoden dieser Klasse zu Verfügung steht. Was mache ich falsch, oder was habe ich vergessen. Das Feld arSearchFields ist in der Klasse wie folgt hinterlegt: CStringArray arSearchFields Gruß aus Hanau Patrick Zitieren
Diablo999 Geschrieben 20. Januar 2005 Geschrieben 20. Januar 2005 Deiner Beschreibung nach stell ich mir das grad so vor: struct sField { CString Feld1; CString Feld2; CString Field3; } class cMyClass { private: sField* ar; // Das ist dein Array public: cMyClass(int Anzahl) { // Das Array im Speicher erstellen ar = new sField[Anzahl]; // jetzt noch das Array befüllen // Zugriff über ar[0].Feld1 } // HIer eine Memberfunktion die mit dem Array was Anstellt const sField* GetItem(int n) { // Hier evtl. Prüfung ob n ein gültiger INdex ist return ar[n]; } } Hoffe das habe ich so richtig verstanden???? Greetz Diablo999 Zitieren
Manfred.Becker Geschrieben 21. Januar 2005 Geschrieben 21. Januar 2005 Hi Patrick, denk dran, dass deine Struktur CString-Elemente enthalten. CString ist 'ne Klasse, und kein Datentyp! Wenn du also vor hast eine Instanzvariable der Klasse bereits beim Erstellen mit Werten zu füllen, dann brauchst du nen entsprechenden Konstruktor: struct sField { CString Feld1; CString Feld2; CString Feld3; //Konstruktor der Struktur sField(CString f1,CString f2,CString f3) { Feld1=f1; Feld2=f2;Feld3=f3; }; }; Damit lässt sich dann folgendes tun: sField test = sField("1","2","3"); Beachte weiterhin, dass CStringArray ebenfalls eine Klasse ist! Man kann zwar auf die einzelnen Elemente im Array über die Indexierung zugreifen, aber Elemente (und dabei handelt es sich um CString-Elemente) hinzufügen geht mit der Memberfunktion Add() : CStringArray strArTest; strArTest.Add("1"); strArTest.Add("2"); strArTest.Add("3"); CString strValue = strArTest[0]; // Indexwerte 0..2 verwenden! Ich hoffe, dass dir das weiterhilft... (Eine Mögliche Lösung hat ja bereits Diablo999 geliefert) Ciao Manfred Zitieren
Patrick.Karre Geschrieben 21. Januar 2005 Autor Geschrieben 21. Januar 2005 Hallo Manfred, gestern Nachmittag kam ich dann auch nach hilfe auf diese Lösung. Ich hatte die ganze Zeit an der falschen Stelle versucht mein Problem zu beheben. Danke für eure hilfe. Gruß aus Hanau Patrick Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.