Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

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

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

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

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.