Methoden untereinander aufrufen
-
Vielen Dank erstmal, aber ich meinte das anders. Ich wollte die Bedingung in der Methode stellen und dann die nächste Methode genau in dieser Methode aufrufen. Ich kopier mal den Code, wie ich das meine:
void Methode1(){ if(Bedingung){ Bedingung2; } } void Methode2(){ } int main() { Methode1(); }
-
Na wenn schon, dann solltest du in Zeile 3 auch die gewünschte Methode aufrufen. (sorry, bei so einer vagen Problembeschreibung gibt es keine exakteren Antworten)
-
Nach meinem Code würde es auch genau so in Java funktionieren, in C++ wird mir allerdings der Fehler "error C3861: 'Methode1': identifier not found
1>" angezeigt. Wenn es vom Prinzip her so funktionieren sollte, wie der Code beschreibt, welche Dateien muss ich denn am Programmanfang zusätzlich laden? Ich meine wie#include <iostream>
.
-
In C++ muß eine Funktion bekannt sein (deklariert), bevor sie verwendet werden kann. Das heißt, vor der Definition von Methode1() mußt du zumindest einen Prototyp für Methode2() hinsetzen - eventuell auch gleich die komplette Funktion.
-
OK, vielen Dank, das hat mir sehr geholfen!
Geht das trozdem nicht anders? Ich möchte nämlich von der einen zur anderen Methode "springen" und bei Bedarf auch wieder zurück. Besteht da eine Möglichkeit?
Kann ich vielleicht ganz oben schon alle Mehtoden deklarieren, ohne Befehle hineinzuschreiben, und dies dann weiter unten machen?
-
Kannst du mal genauer erklären, was du eigentlich vorhast? Deine Erklärung klingt ein wenig unübersichtlich (besonders der Teil mit dem "springen").
Ansonsten: Ja, du kannst die Funktionen zunächst deklarieren und später definieren (sogar verteilt auf verschiedene Quelldateien, die unabhängig übersetzt werden können).
-
Ich habe folgendes Problem:
void Methode2(){ if(Bedingung){ Methode1(): //Und hier gibt es den Fehler } } void Methode1(){ if(Bedingung){ Methode2(); } } int main() { Methode1(); }
Wie kann ich denn eine Methode erst deklarieren und dann definieren? Welche Befehle bräuchte ich hierzu?
-
Du brauchst eine Deklaration (auch als Prototyp) von zumindest einer der Funktionen - die sieht so aus:
void Methode1(); // <- das ist die Deklaration void Methode2(){ if(Bedingung){ Methode1(); //und hier wird sie verwendet } } void Methode1(){ if(Bedingung){ Methode2(); } } int main() { Methode1(); }
(btw, ich hoffe die Bedingung ist in absehbarer Zeit erfüllt, andernfalls landest du in einer Endlos-Rekursion bzw. einem Stack-Überlauf)
-
Aha! So geht das also. Vielen Dank! Nein, keine Angst, in dem Programm geht es erstmal um ein Menü, und ich will einfach eine Taste zum "zurückspringen" im Menü festlegen.
-
Ich finde diese Art der Formatierung sowas von unübersichtlich.
Und außerdem müsste dann auch alles durchgängig so fürchterlich formatiert sein:
int main(){ Methode1(); }
EDIT:
Außerdem hat das Thema mit MFC relativ wenig zu tun.
-
TheWiso schrieb:
Aha! So geht das also. Vielen Dank! Nein, keine Angst, in dem Programm geht es erstmal um ein Menü, und ich will einfach eine Taste zum "zurückspringen" im Menü festlegen.
Also zum "Zurückspringen" würde ich die Funktion nicht neu aufrufen, sondern die aktuelle Funktion per return wieder verlassen.