INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Auf Array einer Klasse zugreifen
25.11.2020, 12:55
Beitrag #1
Auf Array einer Klasse zugreifen
Hallo,

ich habe eine Klasse angelegt und darin ein Array, dass nach außen sichtbar ist. In der Klasse kann ich mit dem Array arbeiten. Wenn ich aus dem Array einen Wert lesen möchte (bla.meins[x]) dann bekomme ich stets "0" zurück. Wenn ich in der Klasse "bla.meins[x]" auslese, steht da aber ein Wert ungleich "0" drin.

Ich weiß noch nicht, was ich da falsch mache. Irgendwas mit dem Zugriff von außen, auf das Array in der Klasse? Greife ich da evtl. auf eine Kopie von außen zu? Ich verstehe das noch nicht.


Gruß
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
25.11.2020, 13:12 (Dieser Beitrag wurde zuletzt bearbeitet: 25.11.2020 13:13 von Nichtraucher.)
Beitrag #2
RE: Auf Array einer Klasse zugreifen
Ich bin jetzt den Umweg über eine Methode gegangen, die den Wert aus dem Array nach außen zurückgibt. Das funktioniert. Ich kann aber auch von außen nicht in das Array schreiben. In andere Arrays schon.

Das funktioniert nicht: a = bla.meins[x];
Das funktioniert auch nicht: bla.meins[x] = a;

aber, bei einem anderen zweidimensionalen Array:

Das funktioniert: bla.meins1[bla1.zeiger][x] = a;
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
25.11.2020, 13:28 (Dieser Beitrag wurde zuletzt bearbeitet: 25.11.2020 13:29 von MicroBahner.)
Beitrag #3
RE: Auf Array einer Klasse zugreifen
Solange Du uns deinen Code vorenthältst, kann man dazu auch nichts sagen.
Wo bei es im Sinn der OOP eh besser ist, auf Daten in einer Klasse über eine Methode zuzugreifen, und nicht direkt.

Gruß, Franz-Peter
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
25.11.2020, 13:52
Beitrag #4
RE: Auf Array einer Klasse zugreifen
Zitat:Solange Du uns deinen Code vorenthältst, kann man dazu auch nichts sagen.

Na ja, vielleicht konzentriert man sich auf das Problem und nicht auf einen riesigen Code? Beschrieben ist das Problem ja.

Die Behelfslösung, eine Methode einzusetzen, um einen Wert zurückzuliefern, ist auch nicht die bessere Wahl oder so, ein Methodenaufruf kostet ja auch wieder Taktzyklen.

Ich suche nebenbei mal weiter...
Vorübergehend ist das Problem gebannt.


Gruß
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
25.11.2020, 14:03
Beitrag #5
RE: Auf Array einer Klasse zugreifen
Da wir ohne Deinen Code nicht wissen, wie Du das Array in der Klasse angelegt hast, stehst Du Dir mit dieser Art Antwort selbst im Weg.

Ein Grundprinzip der OOP ist die strenge Kapselung. Deshalb ist der Zugriff über Getter und Setter keine Behelfslösung, sonder der bevorzugte Weg.

Du solltest Dich eingehender mit den Grundlagen der OOP beschäftigen, da zeigen Deine Aussagen noch kräftige Lücken.

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
25.11.2020, 14:19 (Dieser Beitrag wurde zuletzt bearbeitet: 25.11.2020 14:24 von MicroBahner.)
Beitrag #6
RE: Auf Array einer Klasse zugreifen
(25.11.2020 13:52)Nichtraucher schrieb:  Na ja, vielleicht konzentriert man sich auf das Problem und nicht auf einen riesigen Code? Beschrieben ist das Problem ja
?? Das Problem dürfte in deinem Code liegen. Denn wenn man es richtig macht, funktioniert so etwas ja.
Wenn der Code so groß ist, kannst Du ja einen kleines Beispiel schreiben, was dein Problem zeigt.

Gruß, Franz-Peter
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
25.11.2020, 15:28 (Dieser Beitrag wurde zuletzt bearbeitet: 25.11.2020 15:35 von Nichtraucher.)
Beitrag #7
RE: Auf Array einer Klasse zugreifen
Ich habe nun alles ausprobiert, was mir so einfiel. Es ist auch nicht das erste Mal, dass ich auf so etwas stoße, aber ich habe keine Ahnung warum das so ist. Sonst habe ich dann einfach eine Methode eingesetzt, wie jetzt auch, um das Problem zu beheben. Ich habe im Netz schon andere Codes gesehen, wo das auch funktionieren soll. Ich versuche das noch mal mit einem Stück "Pseudo"-Code darzustellen. Der Code zeigt all das, auf was ich das Problem einschränken konnte:

Code:
class Beispiel
{
  public:
    byte         buffer1[24][24];
    uint16_t    buffer2[24];

        uint16_t    gib(int i);
}

uint16_t Beispiel::gib(int i){
    return buffer2[i];
}

----------------------------------
//Hier ein Beispiel, wie ich es verwenden würde, mit Ergebnis dazu

//buffer2[4] ist irgendwann mit 0xffaa belegt, der Wert steht dort drin, das wurde verifiziert
//buffer1[24][24] ist irgendwann mit 0x01 belegt, der Wert steht dort drin, das wurde verifiziert

Beispiel meins;

uint16_t d = meins.buffer2[4];  //d ist gleich 0
            d = meins.gib(4);      //d ist gleich 0xffaa
byte     d = meins.buffer1[24][24]; //d ist gleich 0x01



Ich lese mir gleich noch alle Antworten durch.

Gruß
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
25.11.2020, 15:43 (Dieser Beitrag wurde zuletzt bearbeitet: 25.11.2020 15:46 von MicroBahner.)
Beitrag #8
RE: Auf Array einer Klasse zugreifen
So ein Pseudo-Code Fragment hilft nicht viel weiter.
Hier ein funktionierendes Beispiel:
Code:
class ArrayTest {
  public:
    int meins[20];
    ArrayTest() {}

    void setArray(byte ix, int wert ) {
      meins[ix] = wert;
    }

    int getArray( byte ix ) {
      return meins[ix] ;
    }
};

ArrayTest bla;
int a, x;

void printBla() {
  for ( x = 0; x < 20; x++ ) {
    a = bla.meins[x];
    // a = bla.getArray(x);
    Serial.print( a ); Serial.print(" ");
  }
  Serial.println();
}

void setup() {
  Serial.begin(115200);
  printBla();  // Initialwerte ( alles 0 )
  for ( x = 0; x < 20; x++ ) {
    a = x*3;
    //bla.setArray( x, a );
    bla.meins[x] = a;
  }
  printBla();  // geänderte Werte
}

void loop() {
  // put your main code here, to run repeatedly:

}

Gruß, Franz-Peter
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  UDP Array sascha_st 3 191 26.07.2021 16:11
Letzter Beitrag: Tommy56
  Zweidimensionales Array Bitklopfer 15 1.031 09.06.2021 14:45
Letzter Beitrag: GuaAck
  Messwerte im Array süffi1234 19 1.599 09.12.2020 17:18
Letzter Beitrag: Guekard
  Verständnisfrage 2D Array hugofant 2 646 06.10.2020 07:35
Letzter Beitrag: hugofant
  NRF24I01 Empfangenen Text in einer Var. speichern zebrazehn 10 1.565 19.09.2020 12:54
Letzter Beitrag: hotsystems
  Batterie Innenwiderstand messen - If, Else in einer If, Else Anweisung Wuschi 32 4.556 15.08.2020 11:22
Letzter Beitrag: Franz54
  Eine Frage zu einer neuen ino Datei Elly 22 3.213 01.06.2020 19:59
Letzter Beitrag: Elly
  Array Werte in einen String ChriscoGT 3 1.325 12.05.2020 15:41
Letzter Beitrag: Tommy56
  Frage zum richtigen verwenden einer Funktion Gerdchen03 3 1.387 10.04.2020 19:37
Letzter Beitrag: Tommy56
  Array Harry 6 1.266 03.04.2020 20:06
Letzter Beitrag: Tommy56

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste