Ich habe versucht, vorher zu fragen, aber ich war nicht sehr klar, also frage ich es erneut.
Ich möchte eine Variable haben, die vom Wert einer anderen Variablen abhängt, wie in diesem Beispiel b:
%Vor%Natürlich existiert das nicht in C ++, aber das ist was ich will.
Also habe ich stattdessen versucht, eine Funktion zu erstellen:
%Vor%Das oben genannte funktioniert nicht, da C ++ keine verschachtelten Funktionen zulässt.
Ich kann nur Funktionen außerhalb von main () wie folgt machen:
%Vor%Aber das funktioniert nicht, weil a nicht im selben Umfang wie b () ist, also müsste ich als Parameter übergeben und das möchte ich nicht.
Gibt es Tricks, um etwas Ähnliches wie eine abhängige Variable in C ++ zu bekommen?
Was Sie brauchen, ist eine Schließung . Wenn Sie C ++ 0x-Funktionen verwenden können, haben Sie Glück. Andernfalls können Sie manuell eine definieren:
%Vor% Sie können auch B
in main
definieren, aber einige Compiler würden es nicht mögen.
Die Syntax C ++ 0x Lambda sieht folgendermaßen aus:
%Vor% Das [&]
bedeutet, dass das Lambda lokale Variablen als Referenz erfasst.
Sie könnten eine Klasse definieren, die ein Mitglied a und dann eine Funktion b () hat, die den Wert a + 1 zurückgibt. Eine grundlegende Implementierung wäre etwa:
%Vor%Sie können das Überladen von Operatoren nach Bedarf hinzufügen, damit es mehr wie normale Ganzzahlen funktioniert, wenn Sie dies wünschen.
Definieren Sie eine Klasse namens LinkedInt oder etwas, das sich wie ein int verhält, aber eine RelatedTo-Beziehung für sich selbst und ein zusätzliches Member hat, das ein Funktionszeiger auf die auszuwertende Funktion ist, wenn der Wert der ganzen Zahl berechnet wird. Ziemlich einfach. Lassen Sie es mich wissen, wenn Sie einige Hinweise auf die Codierung benötigen.
Die kurze Antwort ist, dass OOP mehr als genug ist, um dieses Problem zu begraben.