Zugriff auf Array- Elemente
-
Hallo zusammen,
ich habe folgendes Problem:
zu meiner Dialoganwendung habe ich einen Klassenobjekt (S7Conn) eingefügt, die externe Daten verwaltet.Die Anzahl der Daten soll erst zur Laufzeit ermittelt werden.
Pro Dateneinheit wird ein Objekt erstellt (class CDaten)
Daher erstelle ich einen Array von CDaten-Objekten auf dem Heap:[code] CDaten *ptrDaten = new CDaten [DatRange]; // public : strDaten [/code]
Daten werden zyklisch aktualisiert.
Innerhalb von der Klasse verwende ich einen temporären Zeiger, um auf jeweilige Elemente zugreifen zu können.
Mein Problem: ich möchte die einzelne Daten in meinem Dialog ausgeben.
wenn ich die Daten zu lesen :[code] strDaten m_Speed1 = S7Conn -> ptrDaten -> GetValue(); [/code]
bekomme ich natürlich den Zugriff auf das erste Objekt: ptrDaten[0].
Wie komme ich auf die andere ran?
Sowas wie:m_Speed1 = S7Conn -> ptrDaten + 1 -> GetValue();
wäre toll, geht aber nicht.
kann mir jemand auf die Sprünge helfen? oder ne Idee, wie es vielleicht anders machen kann?
Grüße
Roman
-
class CDaten{ int x; public: CDaten():x(9){} int getValue(){ return x; } }; int main(){ CDaten *ptrDaten = new CDaten [10]; CDaten *helper=ptrDaten; int i=0; //entweder for (i=0; i<10; i++){ cout<<ptrDaten->getValue()<<endl; ptrDaten++; } ptrDaten=helper; //zeiger auf anfangselement //oder for (i=0; i<10; i++) cout<<ptrDaten[i].getValue()<<endl; //über punktoperator }
-
Roman007 schrieb:
Sowas wie:
m_Speed1 = S7Conn -> ptrDaten + 1 -> GetValue();
wäre toll, geht aber nicht.
Wie wär's mal mit Klammerung? ('+' hat niedriegere Priorität als '->')
m_Speed1 = S7Conn -> (ptrDaten + 1) -> GetValue();
(aber elise's Version mit dem [] sieht noch eleganter aus)
-
danke euch beiden.
@elise
Nach deinen Schema aktualisiere ich jetzt Daten in den Datenobjekten.
War ne gute IdeeAber über zwei Objekten hinweg komme ich leider an alle Arrays Objekte nicht dran.
Ich habe es anders gelöst.
In der Dialogklasse habe die Adresse des ersten Elements als Zeiger gespeichert.
Jetzt kann ich (ohne dass ich die zwischen Klasse aufrufen muss) den zeiger addieren, und so auf alle Elemente zugreifen kann.Grüße
Roman