Frage zu Variabeln in Klassenfunktionen
-
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önsloc
...
-
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?
Weilsloc
das Pech hat direkt im Anschluß an das Arrayq
zu liegen.
Wenn jetztqput()
eins ausserhalb des Arrays schreibt geht halt irgendwas kaputt. In meinem Fallsloc
...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