Zugriff auf Variablen aus anderen c++ - Funktion
Muss ich Zugriff auf Variablen, die innerhalb einer anderen Funktion.
Übernehmen f1()
void f1()
{
double a;
int b;
//some operations
}
sowie f2()
void f2()
{
//some operations
//access a and b from f1()
}
Ist es möglich in c++? Wie kann das getan werden?
Verweis auf die Funktion, wie gezeigt, hier ist keine passende Antwort für meinen Fall, denn diese verdirbt die Reihenfolge von aufrufen von Funktionen. Globale Variablen zu deklarieren auch verweigert.
- Die Parameter verwenden.
- Ihr Ziel verstößt klar gegen den "Code für die Schnittstelle, nicht die Implementierung." - Regel.
- Was dürfen Sie ändern, in dieser bizarren Hausaufgabe?
- Stellen Sie global, wenn Sie zu haben
- Tut genau das, was Sie sagen, ist unmöglich. Vielleicht können Sie uns mehr Informationen über das, was Sie erreichen wollen, dann können wir vorschlagen, der richtige Weg, es zu tun.
- Sie können tun, was Sie wollen, außer die zwei oben beschriebenen Bedingungen
- "dies verdirbt die Reihenfolge von aufrufen von Funktionen" - verursacht auch Bier kommen aus dem monkey ' s Nase?
- Nein, es ist nicht möglich, denn wie die meisten Sprachen, C++ ist lexikalisch beschränkt. Verschlüsse ermöglichen könnten, erhalten Sie Art bekommen, um dieses (blöde/Bizarr) Anforderung, aber wer weiß, was die person, die gefragt ist das denken.
Du musst angemeldet sein, um einen Kommentar abzugeben.
In C++ gibt es keine Möglichkeit zum Zugriff auf lokal deklarierte Funktion von Variablen außerhalb der Funktion gültig ist. Einfach ausgedrückt, was Sie fordern hier:
ist einfach unmöglich. Alles, was Sie versuchen, dass scheint, um Ihnen zu erlauben, das zu tun, ist Undefiniertes Verhalten.
Was Sie tun können, ist schalten Sie "f1" und "f2", wie die Methoden einer Klasse und setzen
double a
undint b
als Mitglied Staaten Daten:Diese erfüllt Ihre zwei Anforderungen. Nämlich:
b
sind nicht global, Sie sind Klasse Daten-member, die spezifisch für eine bestimmte Instanz.Klingt es wie Sie wollen, rufen Sie
f2
von einem anderen Ort alsf1
z.B.Wenn das der Fall ist: die Variablen, die gar nicht existieren an der Zeit
f2
genannt wird, so gibt es nichts zu zugreifen.(Und du bist zu verkennen Umfang für Lebensdauer. Diese sind sehr verschiedene Dinge.)
Eine Sache, die Sie kann tun ist, übergeben Sie die Variablen per Referenz zu allen Funktionen, die Sie benötigen.
Was Sie tun können, ist etwas ähnliches wie das, was greatwolf vorgeschlagen. Sie können der Deklaration einer Klasse innerhalb Ihrer Funktion. Dies dient folgendem Zweck:
Sie können eine Funktion definieren, die nur im aktuellen scope, also nicht von aussen zugänglich, dass der Umfang und die Funktion Zugriff auf die Variablen, die in diesem Bereich, als wären Sie global. Die Klasse ist auch nur definiert in Ihrem aktuellen Bereich.