Über Pointer den Inhalt eines privaten Feldes ändern



  • This post is deleted!


  • Und hast du dem Betreuer auch verraten, wie du an den Pointer gekommen bist?



  • @manni66
    Hallo manni66, ich verstehe leider nicht was genau du meinst. Ich habe ihm die beiden Dateien ja auch gesendet und meinte dass ich da reinschreiben und die Nachricht dann senden kann.
    Nur seine Antwort, dass es so nicht klappt hat mich unsicher gemacht. Anscheinend klappt es doch, denn in wireshark kann ich dann die Nachricht sehen welche ich gesendet habe. Als Test hatte ich die ganze Nachricht als 0xFF....,das fällt ja sofort aus, wenn da eine Nachricht voller 0xFF ist.

    Ursprünglich war sein Vorschlag eine Funktion in dem public Bereich (zb SetByte..) zu definieren, ich hab s aber über den pointer versucht.



  • @dodo2004 hast du ihm gesagt, dass du die Funktion getDataPt eingefügt hast?

    Warum benutzt du nicht getData? Die liefert doch schon m_DSMSData.

    Wenn private ein Problem wäre, müsstest du das nicht mit Wireshark herausfinden. Der Compiler würde dir schon auf die Finger klopfen.



  • @manni66 hallo manni66, wahrscheinlich hast du recht, da sie auch m_DSMSData zurückgibt. Ich wollte beim bestehenden Code nicht viel ändern, deswegen habe ich das mit dem ptr gemacht, damit ich Weiss, dass es von mit kommt.

    Überall steht, dass man nur innerhalb des structs auf private Bereich zugreifen kann. Mit dem pointer schreibe ich jedoch von außen in den frame.. Und mir ist nicht klar wie das dann geschieht.



  • @dodo2004 sagte in Über Pointer den Inhalt eines privaten Feldes ändern:

    Überall steht, dass man nur innerhalb des structs auf private Bereich zugreifen kann. Mit dem pointer schreibe ich jedoch von außen in den frame.. Und mir ist nicht klar wie das dann geschieht.

    Zugreifen ist dsmsMessage.m_DSMSData. Wenn m_DSMSData private ist, meldet der Compiler hier einen Fehler. Wenn du einen Pointer darauf hast, kannst du damit machen was du willst. Da gibt es keinen Schutz. getData() bzw dein getDataPtr() machen die Variable effektiv public. Man hätte also die Funktionen und das private einfach weglassen können.

    Leider scheint da bei euch keiner wirklich Ahnung zu haben. Du solltest dir ein anständiges Buch besorgen.


Log in to reply