Frage zu Variabeln in Klassenfunktionen



  • Vielen Dank!
    Ich konnte es nicht verstehen, da es nicht vorher erklärt wurde!
    Habe gerade nochmal genau nachgelesen!
    Dabei ist das elementar wichtig...Na ja...

    Ok, gelobe in Zukunft besser gestaltete Fragen!:)



  • Irre ich mich, oder schreibt das Ding über die array Grenzen hinaus? 😞

    PS: Dein Posting oben, kannst Du noch editieren und die Code-Tags nachträglich einfügen.



  • Furble Wurble schrieb:

    Irre ich mich, oder schreibt das Ding über die array Grenzen hinaus? 😞

    In Beispiel Fall nicht, aber im allgemeinen ja.



  • Aber wenn ich richtig überlegt habe, wird der nullte Index auch nicht genutzt, weil
    sloc++;
    q[sloc] = i;
    oder?



  • Matthias2006 schrieb:

    Aber wenn ich richtig überlegt habe, wird der nullte Index auch nicht genutzt, weil
    sloc++;
    q[sloc] = i;
    oder?

    Jupp.

    Kannst ja mal spaßeshalber alle Vorkommnisse von 100 durch 2 ersetzen und das Beispiel laufen lassen.
    Bei mir überschreibt er schön sloc ... 🙂



  • Weil er genau auf 100 prüft und nicht auf grösser/gleich, gell?
    Obwohl nee, rloc dürfte eigentlich net grösser als 100 werden..
    Noch viel zu lernen es gibt...



  • Matthias2006 schrieb:

    Weil er genau auf 100 prüft und nicht auf grösser/gleich, gell?

    Warum er bei mir sloc überschreibt?
    Weil sloc das Pech hat direkt im Anschluß an das Array q zu liegen.
    Wenn jetzt qput() eins ausserhalb des Arrays schreibt geht halt irgendwas kaputt. In meinem Fall sloc ...

    Das ist ein klassischer Buffer Overflow.



  • Weil du nach dem Test den index noch erhoest.



  • 'init'-Funktionen sind übrigens auch doof, dafür gibts den Konstruktor.



  • Nicht immer 🙂
    Ich habe Klassen, die gegenseitigen Zugriff benötigen. Da kann ich schlecht dem Konstruktor einen Pointer auf die anderen Klassen übergeben, wenn sie noch nicht instanziert sind.
    Da nutze ich dann Init()-Funktionen um die Pointer zu übergeben, nachdem alle Klassen instanziert wurden.
    Aber allgemein sind init-Funktionen überflüssig, das stimmt schon 😉



  • Cherup schrieb:

    Ich habe Klassen, die gegenseitigen Zugriff benötigen.

    Das liegt wohl daran, das so ein Zugriff auch doof ist.



  • Mag sein.
    Aber wie würdest du eine Interface-Klasse zwischen GUI und Programmlogik implementieren, die zum einen auf eine bestimmte Klasse zugreifen muss und diese Klasse der Interface-Klasse wiederum zu zur Laufzeit festgelegten Zeitpunkten mitteilen muss, das etwas passiert ist? 😉



  • Cherup schrieb:

    Mag sein.
    Aber wie würdest du eine Interface-Klasse zwischen GUI und Programmlogik implementieren, die zum einen auf eine bestimmte Klasse zugreifen muss und diese Klasse der Interface-Klasse wiederum zu zur Laufzeit festgelegten Zeitpunkten mitteilen muss, das etwas passiert ist? 😉

    Warum sollte man dafür eine init-Funktion benötigen? Beide Objekte können vollständig konstruiert werden, sie müssen nur später miteinander bekannt gemacht werden.

    Gerade im GUI-Bereich wird da eine eher lose Verknüpfung mit signal/slot bzw. Observable/Observer bevorzugt.



  • manni66 schrieb:

    Beide Objekte können vollständig konstruiert werden, sie müssen nur später miteinander bekannt gemacht werden.

    Genau das mache ich mit der init-Funktion. Ich erstelle die Instanzen der Klassen und erst am Ende übergebe ich mit der Init-funktion die pointer.
    Mag auch sein, dass hier das Verständnis einer init-Funktion voneinander abweicht 🙂
    Die GUi hat mit dem Bereich der Software nicht wirklich was zu tun, sie kennt nur die Interface-Klasse.

    Ist ja auch egal, sind schon wieder weit ab vom Thema 😉


Anmelden zum Antworten