Tapeman Geschrieben 16. September 2003 Geschrieben 16. September 2003 Hallo, um mir Arbeit mit Klassen etwas zu ersparen, wollte ich versuchen, Funktionen und Prozeduren zu schachteln, aber ich hatte bisher keinen Erfolg. Ich habe schon alles probiert: void X() void Y() {...} {...}; void X() { void Y() { ... } ... }; Aber nichts geht. Gibt es da eine Lösung? Oder ist C++ nicht dazu in der Lage? Gruß Tapeman Zitieren
need-some-blood Geschrieben 16. September 2003 Geschrieben 16. September 2003 versuchs damit void x(){ ... ... ... ... ... } void y(){ ... ... ... x; // Hier den Prozedurnamen angeben } [/PHP] MVG need-some-blood Zitieren
nic_power Geschrieben 16. September 2003 Geschrieben 16. September 2003 Hallo, eine echte Schachtelung int func1 { int func2 { ... code ... return result; }; ... code ... return result; }; ist nicht möglich. Aber was spricht dagegen, eine Klasse zu verwenden in der Du die Funktionen als Member-Functions implementierst? Nic Zitieren
Tapeman Geschrieben 16. September 2003 Autor Geschrieben 16. September 2003 Danke, die Methode ist mir bereits bekannt und auch schon stark im Einsatz, nur geht es mir auch mit um die Gültigkeit, es soll so sein, das nur Prozedur X die Prozedur Y aufrufen kann. Gruß Tapeman Zitieren
need-some-blood Geschrieben 16. September 2003 Geschrieben 16. September 2003 Warum rufst du dann nicht aus der Prozedur X die Prozedur Y auf, so wie ich es bereits gezeigt habe? MVG need-some-blood Zitieren
nic_power Geschrieben 16. September 2003 Geschrieben 16. September 2003 Hallo, Das wird nicht funktionieren (zumindest nicht unter der Vorgabe, dass nur bestimmte Funktionen Y aufrufen dürfen/können). Allerdings sollte sich dies Vorgabe durch eine Klasse oder mehrere Klassen mit privaten Memberfunctions erfüllen lassen. Nic Zitieren
Tapeman Geschrieben 17. September 2003 Autor Geschrieben 17. September 2003 Hallo, Was jetzt neben bei, member-Funktionen, sind normale Funktionen einer Klasse, oder? :-? Naja, ich benutzte ja schon die Methode X ruft Y auf, aber ich wollte alles ein wenig strukturierter und ohne Klassen. Ich bin jetzt aber doch daran, meine Programmfunktionen zu gruppieren und in 2 verschiedene Klassen zu implementieren. Was mir gleich einfällt, wenn ich eine Klasse mit mehreren Teilfunktionen besitze, aber nur eine Funktion im Programm gebrauche, wird dann auch der Code der anderen Klassen implementiert? Danke. Zitieren
LINK Geschrieben 17. September 2003 Geschrieben 17. September 2003 Original geschrieben von Tapeman Was jetzt neben bei, member-Funktionen, sind normale Funktionen einer Klasse, oder? :-? ja, das sind die methoden einer klasse Naja, ich benutzte ja schon die Methode X ruft Y auf, aber ich wollte alles ein wenig strukturierter und ohne Klassen. Ich bin jetzt aber doch daran, meine Programmfunktionen zu gruppieren und in 2 verschiedene Klassen zu implementieren. ohne klassen? naja, die oop beruht doch auf klassen, oder hab ich da irgendwas falsch verstanden? willst du prozedural programmieren? :confused: Was mir gleich einfällt, wenn ich eine Klasse mit mehreren Teilfunktionen besitze, aber nur eine Funktion im Programm gebrauche, wird dann auch der Code der anderen Klassen implementiert? das verstehe ich jetzt nicht... wenn du nur eine funktion brauchst, dann implementierst du nur diese, wo ist das problem? Zitieren
Tapeman Geschrieben 17. September 2003 Autor Geschrieben 17. September 2003 Erst wollte ich nur prozedural programmieren, da aber in C++ keine Möglichkeit besteht Prozeduren zu verschachteln, bin ich nach OOP ausgewichen. Ich meine, wenn ich eine Klasse mit einer Sammlung von Funktionen hab, und diese wie stdio.h und iostream einbinde aber nur eine Funktion benutze, wird dann nur diese Funktion übersetzt oder auch der Rest der Klasse? Danke. Zitieren
Timon Geschrieben 18. September 2003 Geschrieben 18. September 2003 Mal eine blöde Frage: Gibt es eine Programmiersprache die das Verschachteln von Funktionen erlaubt? Wozu? @Tapeman: Die ganze Klasse wird mitgelinkt. Bei Libraries(z.B. stdio) ist der Fall ein bisschen anders. Da hängt es davon ab ob jede Funktion ein eigenes Modul in der Library ist oder nicht. Zitieren
Tapeman Geschrieben 19. September 2003 Autor Geschrieben 19. September 2003 Ja das verschachteln von Prozedure erlaubt zum Beispiel Turbo Pascal mit: procedure A; procedure B; begin ... end; begin B; end; Ich wollte bei mir ja alles etwas übersichtlicher haben. Und es hat mich ja einfach interessiert, weil wie gesagt Pascal das erlaubt. Wozu ? hm, naja, lt. meinem Beispiel kann dann eben nur Prozedur A die Prozedur B aufrufen. Womöglich aufgrund der Overlaytechnik. Zitieren
LINK Geschrieben 20. September 2003 Geschrieben 20. September 2003 hmm, also wenn du "nur" willst, dass funktion A - und nur diese funktion A - funktion B aufrufen können soll, dann deklarier doch funktion B als private, dann kann keiner von ausserhalb darauf zugreifen, aber ich glaube, das stand bereits ein paar posts höher. vielleicht solltest du dich erst mit oop allgemein, also sozusagen der "philosophie" befassen, dann weisst du auch, wie du was machen kannst und vor allem warum Zitieren
FinalFantasy Geschrieben 29. September 2003 Geschrieben 29. September 2003 Also ich find das nicht wirklich überischtlich. Ausserdem is C++ nicht prozedural sondern objektorientiert. C ist prozedural, aber so eine Schachtelung geht in C auch nicht. Aber wenn du nur in Func A die Func B aufrufen willst, dann kannst du dir Func B eigentlich gleich sparen, und den Code von B einfach mit in A schreiben, oder nicht? Zitieren
Guybrush Threepwood Geschrieben 29. September 2003 Geschrieben 29. September 2003 Mit C++ kannst du genauso Prozedural programmieren wie mit C. Selbst wenn du alles in Klassen steckst hast du immer noch deine main Routine die erst ab C# (bzw. C.NET ?) objektorientiert aufgebaut ist;) Nur mal so am Rande:floet: Zitieren
nic_power Geschrieben 30. September 2003 Geschrieben 30. September 2003 Hallo, Original geschrieben von FinalFantasy Aber wenn du nur in Func A die Func B aufrufen willst, dann kannst du dir Func B eigentlich gleich sparen, und den Code von B einfach mit in A schreiben, oder nicht? Wenn identischer Code mehrmals innerhalb der Funktion benötigt wird, bläht das den Code unnötig auf und macht ihn unübersichtlich. Sinnvoller ist es da, diese Code-Stücke in eine eigenen Funktion zu packen. Nic Zitieren
FinalFantasy Geschrieben 30. September 2003 Geschrieben 30. September 2003 Was mir gestern abend noch eingefallen ist, warum das überhaupt nicht gehen kann: int funca(arg) { int funcb(arg) { //<---- Stelle A .... } funcb(test); //<---- Stelle B .... } Es kann gar nicht gehen, weil an Stelle A die Funktion ja nur definiert würde, keinesfalls aber gleich ausgeführt, also selbst wenn, müsst man die Funktion nochmal, wie z.B. an Stelle B, extra aufrufen. Wenn das einzige was mir eingefallen ist, wie man es machen könnt, dass man funcb wirklich nur in funca aufrufen kann, ist, dass man sich eine Klasse mit nur diesen zwei Funktionen schreibt, in der dann funca public (oder protected) ist, und funcb private. Aber was natürlich stimmt: Wenn die funcb in funca öfter benötigt wird, würde ich sie auch in eine externe Funktion packen. Nur dann könnte man sie halt von überall aufrufen. Zitieren
Tapeman Geschrieben 9. Oktober 2003 Autor Geschrieben 9. Oktober 2003 Nagut, danke. Ich habe die Daten jetzt so und so in eine Klasse eingebunden. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.