
Crush
Mitglieder-
Gesamte Inhalte
2048 -
Benutzer seit
-
Letzter Besuch
Inhaltstyp
Profile
Forum
Downloads
Kalender
Blogs
Shop
Alle Inhalte von Crush
-
Danke! Du bist echt genial (würde mich auch interessieren wie lange Du schon lernst - oder ob Du überhaupt noch lernst). Typedefs sind immer eine feine Sache bei Templates und Funktionszeigern - find ich auch. Vielleicht noch eine Kleinigkeit: Das foo als Beispielsvariable ist mir klar, aber gerade bei Referenzen wird gerne als Name in Beispielcode als RHS bezeichnet - bedeutet das nicht irgendwas, abgekürzt?
-
Eigentlich sind Referenzen ganz einfach erklärt: Referenzen sind konstante Zeiger - so steht´s jedenfalls beim Stroutrup (einfach ausgedrückt). Das stimmt nicht ganz so - aber das sind Kleinigkeiten um die man sich streiten, weil man´s so am Besten kapiert. Wenn also die Zeiger nie verändert werden dürfen verwendet man, um das auch klar auszudrücken, die Referenzen. Deshalb sind die auch kompatibel (jedenfalls von der Referenz zum Zeiger) und man spricht bei beiden vom Referenzieren &-bei der Referenz *beim Zeiger und Dereferenzieren der Referenzname bei Variablen . bei Objektreferenzen und -> beim Zeiger. Ein Unterschied wäre noch, daß eine Referenz niemals 0 sein darf - ein Zeiger hingegen schon. Machen tun beide dasselbe: Sie zeigen auf eine Position im Speicher, in denen von dort an aufsteigend die Daten gespeichert sind. Mir ist auch nie aufgefallen, daß eine Referenz noch eine andere Bedeutung hätte. Vermutlich war die Referenz vom C her zuerst da, weil man die benötigt um einen Zeiger auf eine schon existierende Variable zeigen zu lassen. Beim Zeiger gibt´s noch eine Erweiterung: Den Zeiger auf Zeiger (**), welcher, verständlich ausgedrückt, nichts weiter als ein Array ist!!! Man kann Zeiger auf Zeiger tatsächlich als Array ansprechen (mit []-Operator) und erhält dann den korrekten Datentyp und Arrayeintrag, ansonsten einfach den Zeiger Dereferenzieren und erhält das erste Element des Arrays. Ein wichtiges Thema wenn man mit sowas arbeitet ist aber die Bereichsprüfung!!! http://www-info2.informatik.uni-wuerzburg.de/dclc-faq/kap2.html http://home.fhtw-berlin.de/~junghans/cref/CONCEPT/pointers.html http://www.informatik.uni-hildesheim.de/SS2000/c-mo/pic_00_v07.ppt
-
Super Klotzkopp!!! Ich wußte, daß man das doch irgendwie hinbekommen sollte. Allerdings das was ich beabsichtigt habe funktioniert immer noch nicht. Das man Funktionszeigern von Klassen auf Members haben kann ist allerdings schon mal was - was mir übrigens unbekannt war - davon hatte ich auch noch nie etwas gehört. Allerdings wenn man logisch nachdenkt ist es aufgrund der Klassenkonzeption wohl die einzige erlaubte Variante. Was ich noch vergeblich probiert hatte war innerhalb einer Klasse einen Funktionszeiger auf eine Methode derselben Klasse zu erzeugen: Das ging auch nicht. Ich habe danach halt irgendwo im Programm von einer Klasse ein Objekt erzeugt und versucht mit aller Gewalt dann mit einer Objektmethode einen Funktionszeiger zu erzeugen - und das ist offensichtlich nicht möglich. Was mich noch etwas verwirrt ist, daß ein Funktionszeiger nur dann initialisierbar ist, wenn er in einer Methode versteckt ist. Warum nur dann? Gibt es da eine logische Erklärung für? Interessant wäre es noch zu wissen, ob man Funktionszeiger als Returnwert weiterreichen kann, dann wäre meine Frage auch komplett gelöst. Schau ich mir an, wenn es mir wieder besser geht (lieg mit Grippe flach). Vielleicht noch eins: Wo hast Du das denn gefunden? In meinen Büchern war eine solche Möglichkeit NIRGENDS erwähnt.
-
FIAE-Umfunktionierung zum Sekretärin und Botenjungen :-| *grrr*
Crush antwortete auf Sting's Thema in IT-Arbeitswelt
Das ist ja schon kriminell, was die mit Dir machen. Ich würde keinen Finger krumm machen. Wenn er Dich kündigt (und das wird er eh, wenn er das Geld braucht) dann siehst Du ohnehin alt aus. Einem armen Schlucker kann man die letzte Unterhose nicht mehr ausziehen - und wie Du sagst hast Du ja nicht sonderlich umfangreiche Mittel während der Ausbildung. Die Internet-Sperre ist verständlich - viele machen da schlechte Erfahrungen. Aber ich kenne keinen Programmierer, der ohne zusätzliche Informationsquellen alle seine Ziele erreicht. Das Du darüber beklagst, daß Du alleine Lernen mußt sagt jeder in diesem Beruf. Aber im echten Berufsleben wird Dir kaum einer helfen - da mußt Du das einfach alles selber hinbekommen - egal wie komplex das auch sein mag: Programmieren ist halt nicht so einfach wie viele meinen... Viele beklagen sich darüber, daß sie NIE an den Computer dürfen oder irgendwas lernen dürfen. Denen geht es noch dreckiger als Dir - und davon gibt´s sehr viele. Ich würde an Deiner Stelle mal zu einem Schuldenberater gehen und dem die Situation auf den Tisch legen - für fast jeden gibt es irgendwo eine Möglichkeit den Schuldenberg abzubauen - und eventuell die erzwungene Firmenbindung aufzulösen. Vor ein paar Jahren hab ich mal einen Artikel gelesen, daß das Handy bei Jungendlichen Punkt Nr. 1 ist, daß sie noch vor einer Berufsausbildung komplett überschuldet sind. Es ist leicht sich Geld irgendwo her zu holen - aber das zurückzahlen tut halt weh - und den Schmerz kann einen keiner nehmen (außer beim äußerst seltenen Privaten Konkurs nach 7 Jahren totaler Schulderlaß). Wichtig ist es noch, daß Du jede Rückzahlung nachweisen kannst, weil es sonst ganz böse für Dich aussehen könnte - und mich beschleicht das Gefühl (mit der "vergessenen" Zwischenprüfung), daß der Dich NIE WIEDER gehen lassen will: Dann wirst Du als Haussklave gehalten - möchtest Du das? Spätestens nach Ende der Ausbildung mußt Du das Geld zurückzahlen ... sieht wirklich traurig aus für Dich. Ich bin mir aber sicher, daß es noch viel mehr gibt, die solche Erfahrungen gemacht haben oder gerade machen - ich habe immer wieder sowas gehört. Warum richtet nur keine eine Anlaufstelle für verarschte Azubis ein? Alle werden geschützt - aber die Azubis - oder schlimmer noch: Praktikanten - sind oft ganz arme Tröpfe - man läßt sie allein im Regen stehen. Ich würde nochmal mit der Bildungsstätte Rücksprache halten - auch die können evtl. entsprechenden etwas Dampf bei der IHK oder der Praktikumsstelle (hoffentlich nicht Ausbildungsbetrieb) machen - Du darfst einfach nicht locker lassen und entsprchend auftreten. Eines ist auf jeden Fall klar: DU MUßT SOFORT WAS UNTERNEHMEN! -
Also bin ja Hobbykoch - und mag chinesische (oder überhaupt asiatische Küche). Im Fernsehen war so ein Koch: "Ken Hom" der einfach ruckzuck superleckere Sachen gewokt hat. Schade, daß ich die Sendung wo der Meister persönlich aktiv war nicht aufgenommen habe =:-(. Da es den zweiten Wok umsonst dazugab (wer´s glaubt - wenigstens hatten wir schon ein Weihnachtsgeschenk für jemanden) habe ich den auch gleich bestellt. Das Kochbuch war sehr dürftig, deshalb bin ich auch gleich losgewandert und habe von KH gleich mal das dickste Kochbuch gekauft, daß ich gefunden habe. Den Mikrowellen-Reiskocher habe ich nicht genommen, weil Mikrowellen alle wichtigen Vitamine und Nährstoffe brutal zerkocht. Die asiatische Küche ist sehr gesund und schmecken tut´s meist auch noch. Reis kann man fast nicht genug essen (ich mische gerne Mais drunter) und man hat bei Reissorten wesentlich mehr Auswahl als bei Kartoffeln (jedenfalls geschmacklich). Ab- und zu mal lohnt es sich auch in einen Asia-Shop zu gehen und sich mit ein paar Ölen, Reis und exotische Zutaten einzudecken. Ich koche mit Gas und da ist die Temperatur natürlich superschnell da und kann ganz haarfein geregelt werden - ideal für den Wok! Wenn ich mal einen neuen Herd bräuchte würde ich bestimmt keinen Elektroherd nehmen. Den abschließenden Reiswein nicht vergessen! Also ich kann´s nur weiterempfehlen! Hier noch ein paar Links: http://www.lurch.de/homepage/homepage.htm?/shop/00050504.html ->BILLIG! ZUGREIFEN (wenn´s das noch gibt)!!! http://www.lurch.de/homepage/rezepte/Kenhom/kenhom.htm http://www.kenhom.com/au_products.htm http://www.kenhom.com/au_recipe.htm http://www.kuechentipps.de/tipps/buecher/laenderkueche/asien/thailand/3806875820.html http://www.google.de/search?num=100&hl=de&q=ken+hom+rezepte&btnG=Google-Suche&meta=cr%3DcountryDE SAIONARA!!! HO!
-
Ich habe schon alles durchprobiert (public, private, protected) der -> Operator ist das Dereferenzieren von Zeigern=Inhalt der Variable. Was ich jedoch bräuchte wäre die Adresse der Funktion. Diese läßt sich aber selbst innerhalb des Objekts nicht referenzieren. Ein Nachschlagen im Stroutrup & noch ein paar anderen Büchern wurde nicht mit einem Wort erwähnt, daß das möglich wäre. Deshalb gehe ich davon aus, daß es einfach nicht geht. Es wäre nur möglich, wenn das Objekt ein eigenständiger Datentyp ist (jedenfalls nach der Fehlermeldung)! Da das bei Objekten wohl nicht der Fall ist ist das unmöglich. Damit will man offensichtlich vor Mißbrauch schützen.
-
Ich vermisse die Brille aus "Hitchhikers Guide" die bei drohender Gefahr schwarz wird... Eine Sonnenbrille, die dunkel wird bei zuviel Sonne ist besser als so ein Zeitglas. Nichts hat soviel schlechten Einfluß auf den Körper und die Zellen wie reines Sonnenlicht. Interessant wird noch das Glas mit Nanopartikel werden: Bis zu 5 Minuten feuerfest (gegen einen Flammenwerfer) und hält die Hitze ab - man kann das Glas auf der anderen Seite anfassen.
-
Ich habe sowas noch nicht gemacht, allerdings sollte man asynchrone Abfragen glaub nicht über normales Multithreading machen, weil die WSA-Schnittstellen schon asynchrone Funktionen anbieten. Ich hab in der MSDN was gefunden, vielleicht bringt Dir das etwas: Such mal nach WSOCK.C und beim Index nach WSAAsync.... bestimmt soll man das ganze so machen.
-
Also ich vermute die haben das so geplant, daß man L oder _T schreibt und dann oben einen define oder typedef auf WCHAR_T setzt.
-
Erst mal das Lob: Hast Du prima gemacht - das lernt man aber nicht in der Schule - in welchem Lehrjahr bist Du? Fertig? Schon prima! Keine Kritik eher eine Frage: Warum arbeitest Du nur mit C (malloc(), free())? Zum Thema Postorder Traverse: Du mußt das unterste Leaf links und dann von der nächsten Abzweigung rechts rückwärts (also nach oben zur Wurzel) durchwandern. Das läßt sich wohl nur mit einer doppelt verketteten Liste (prev) erreichen. Jedenfalls kann ich mir nur schwer vorstellen, wie man das anders hinbekommen könnte. Oder Du arbeitest mit einem Stack und beim Durchwandern ins unterste Blatt mußt Du alle noch nicht abgeernteten Blätter kurzfristig auf den Stack pushen und beim Nach-oben-wandern wieder runterpoppen (hehe hört sich lustig an). Mit dem Austauschen der Ifs wirst Du das wohl nicht hinbekommen. Ansonsten hätte ich keinen weiteren Vorschlag. Gute Arbeit!
-
Firmen machen auch bei Azubis gerne mal Job-Rotation. Wenn es Dir nicht paßt sprich doch jemand mit Entscheidungsgewalt darauf an und frag ob man nicht weiterhin den Plan nach Deinen Vorstellungen laufen lassen könnte. Wer macht überhaupt so einen Plan und mit welcher Begründung wird der durchgesetzt? Hinterfrag halt alles und gibt Deinen Senf dazu ab. 15 Wochen sind ja ein Vierttel Jahr und manche haben die ganze Praktikumszeit nichts mit Computern zu tun. Im schlimmsten Fall mußt Du Dich halt beugen - oder - falls im Einstellungsgespräch was anderes vereinbart war - poche darauf!
-
Aus Stuttgart natürlich (aber ziemlich am Rand). Der Streß kommt erst, wenn man am Ende merkt, daß man das vom Anfang gar nicht mehr so richtig weiß. Allerdings wer nicht gleich von Anfang an sich richtig ins Lernen reinkniet kann schon durchfliegen (bei uns waren das gute 25% soweit ich weiß). Aber man kann ja dann die Prüfung wiederholen. Du solltest Dir schon im Vorfeld genau überlegen in welche Richtung Du Dich spezialisieren willst - und da entweder vorlernen, bzw. über den Unterricht hinaus lernen, weil Du sonst am Ende keine wirklich besondere Qualifikation vorweisen kannst - und das ist für Firmen ja wichtig. Viele merken erst nach 2 Monate Programmierunterricht, daß die das gar nicht blicken und klammern sich dann Hilfesuchend an andere Themen die schon längst vorüber sind (Netzwerkthemen, Homepagegeschichten, evtl. noch ABAP mit SQL). Soweit ich weiß haben die C++ abgeschafft, weil das einfach zuviel für die meisten in der kurzen Zeit war - stattdessen gibt´s nun Java. Allerdings hat man nur weniger Möglichkeiten in der Syntax - zum großen Teil ist das C++ sehr ähnlich. Im Lauf der Zeit werden manche immer fauler und Kapitulieren wegen der Menge des Stoffs. Die geschriebenen Noten (jedenfalls bei der Umschulung) haben keine Bedeutung beim IHK-Zeugnis - KEINE ANMELDENOTE: Die Tagesform zählt! Es wird aber ein extra Zeugnis von der FBD erstellt - bei dem allerdings viele Fächer zu einem Zusammengefaßt werden (BWL: 7-8 Fächer, bzw. Klausuren) und andere wieder als Einzelnote stehen (Personal, VWL, etc.) was natürlich vieles optisch kaputt machen kann. Ich empfehle Dir bei den Einzelfächern nochmal mehr zu lernen, da sich da jede unebenheit in der Note direkt ins Zeugnis ausspielt - und mit diesem bewirbt man sich halt auch - nicht nur mit dem IHK-Zeugnis. Bei der Praktikumsfirma ist die Wahl und die Absprache besonders wichtig. Hier soll man sich "on the job" spezialisieren und am besten noch das Gelernte nachholen, weil lediglich 2-3 Wochen vor der Prüfung nochmal im Schnellverfahren die Problemstellen der Fächer durchgekaut werden. Viele Firmen nutzen den Praktikanten als billige Arbeitskraft und er erhält KEINE Zeit um sich selbst weiterzubilden. Setze der Praktikumsfirma ganz klare Grenzen was Du erwartest, in welchem Bereich Du wieviel Zeit zum Selbststudium möchtest und daß Du nicht ständig für Hiwi-Jobs eingesetzt werden möchtest. Viele mußten wegen solch einem Mist die Praktikumsfirma wechseln (oder weil sie Pleite ging) und die Dir gestohlene Zeit bekommst Du nicht mehr zurück. Am Anfang der Ausbildung sind alle mit dem Lernen im ersten Moment hochmotiviert und träumen schon als Mega-Programmierer die Firmen unsicher zu machen. Doch der Lerneifer läßt schnell nach (vor allem wenn sie in Gruppen gelernt haben). Deshalb empfehle ich Dir ALLEINE zu lernen und sich nur wenn Du gar nichts kapiert hast mit den anderen mal zusammenzusetzen (mit den Besten natürlich). Spätestens wenn die Leute kapieren, daß denen das Programmieren gar nicht liegt setzt eine große Depression ein - es ist halt nicht jeder zum Programmierer geboren und die kurze Zeit reicht nicht aus um einer zu werden). Du solltest, wenn Du das anpeilst, schon vorher ein paar Bücher zu Java, C oder C++ (je nachdem was Dir gefällt - der Umstieg von Einem aufs Andere ist meist schnell getan, weil die Sprachen aus der selben Sprachfamilie kommen und sich zu 95% absolut gleichen) und LERNE IM VORAUS. Dann hast Du nämlich Zeit bei Unklarheiten die Dozenten zu befragen und manchmal braucht man halt etwas mehr Zeit um das ganze zu verstehen. Dann hast Du den anderen auch einen großen Vorteil - vor allem hast Du Zeit eingespart, damit Du alte Schulfächer nochmal nachholen kannst. Das wichtigste ist es nicht mit dem Lernen nachzulassen und Dich nicht von den anderen in der Motivation runterreißen zu lassen. Betrachte die anderen vielleicht am besten nicht als Deine Freunde und Mitschüler - sondern als Konkurrenz die Du versuchen solltest einzuholen. Orientiere Dich nicht nach dem Mittelmaß oder nach unten, sondern nach den Besten und strenge Dich an mit an die Spitze zu gehören. Naja, das Wichtigste habe ich so glaub schon gesagt... Ansonsten möchte Ich Dir gratulieren: Du hast wirklich eine hervorragende Wahl mit dieser Bildungseinrichtung getroffen - die sind wirklich sehr empfehlenswert und haben auch deshalb allgemein einen guten Ruf. Irgendwo wird es doch ab- und zu mal hapern, aber Ausrutscher können jedem mal passieren. Wichtig ist es, wenn Dir was nicht paßt, das auch gleich zu sagen - aber nutze die Beschwerden nicht als Entschuldigung für Faulheit - da haben die nämlich keine Gnade! Das Lerntempo ist sehr schnell - aber wenn Du konzentriert mitmachst und nicht wie viele ständig mal blaumachst - hast Du gute Chancen alles Wichtige aufzunehmen. Gerade wenn man einmal fehlt kann es sein, daß man ein komplettes Thema ausläßt - und ein Nachholen gibt es oft nicht! Da die Dozenten wirklich echte Fachleute sind, bekommt man auch oft sehr viele Informationen die überhaupt nicht in den Büchern stehen oder oft unterschlagen werden. Schreibe Dir besondere Bemerkungen am besten auch mit - da kann man viel Nützliches übers Buch hinaus mitnehmen. Nochmal wegen dem Programmieren: Erst im 2. Halbjahr irgendwann bekommt man das - und das auch noch relativ kurz - deshalb auch der Tip sich schon vorher etwas damit zu befassen. Du solltest Dir halt mit einem klar sein: Du kommst nur soweit wie Du bereit bist mehr zu bringen als die anderen! Hoffentlich habe ich jetzt nicht zuviel Wiederholungen geschrieben, weil es mir gerade sehr schlecht geht (Kopfschmerzen, Fieber, Schüttelfrost, Schwindel). Wenn Du Fragen hast kannst Du gerne auch Personal Messages verschicken. Tschüß!
-
@Kumpi Ich war bei der FBD Stuttgart: Die sind wirklich prima ausgerüstet und die Dozenten sind zu 90% sehr gut (keine Pseudo Lehrer sondern Berufstätige die sich in ihren Fächern auskennen).
-
Interesse besteht!
-
Wenn ich also eine nicht virtuelle Klasse nehme, davon ein Objekt erzeuge und versuche einen Funktionszeiger auf eine Methode dieses Objekts zu richten, dann habe ich ernsthafte Probleme - es klappt nicht! Ich versuche schon seit 2 Stunden rum und es will nicht. Funktionszeiger auf normale Funktionen sind überhaupt kein Problem. Sobald ich mit Objekten arbeite klappt´s nicht mehr. Das Problem ist, daß ich es nicht schaffe die Adresse einer Objektmethode rauszureferenzieren. Gibt es da einen Trick?
-
Hab morgen Einstellungstest Fachinformatiker SI
Crush antwortete auf d00d's Thema in Ausbildung im IT-Bereich
Eigentlich geht das nur durch Training ... -
Also die platte Selbstverarschung von dem Dicken mit dem Gewichtswiegetrick und Thommis bescheuerten Kommentare dazu fand ich so niederträchtig, daß ich gleich wieder umgeschalten habe. Diese Anastacia war wirklich ok. Das der Boris so dick geworden ist (92Kilo) verwundert mich nicht - der spielt halt auch nur noch wenn´s sein muß vermutlich (und das hat der wohl kaum noch nötig wenn´s ums Geld geht). Der einzige wirklich Coole war der Marathon-Moderator (obwohl ich seine Sendungen nicht so mag)!
-
tchar.h wird wohl schon vorher irgendwo vom Compiler included - oder ist vom Globalen Namespace her bekannt. Auf jeden Fall läßt sich alles auch ohne den Include genauso kompilieren. Der Define hat keine Auswirkung. Die ersten zwei Versionen funktionieren einwandfrei uns es kommt Unicode bei raus, aber bei L oder _T kommen immer normale Chars bei raus.
-
Wenn man das ganze aus Assembler-Sicht betrachtet wird einem klar, warum das nicht geht. Ein Funktionsaufruf ist nichts weiter als ein Unterprogram. Programmtechnisch wird in ein Unterprogramm reingesprungen und nach dessen Abarbeitung wieder zurückgekehrt. Innerhalb eines Unterprogramms kann halt leider bestenfalls in ein neues Unterprogramm reingesprungen werden, aber auch da muß die Adresse eindeutig sein. Variablen und Funktionen müssen immer eindeutig sein, daß der Compiler weiß wo wann in welche Methode reingesprungen werden muß. Deshalb ist es nicht erlaubt eine Funktion oder eine Variable im selben Adress-, Namensraum oder Klasse zu definieren! Die einzigste Methode die Dir bleiben würde um sowas ähnliches zu schaffen wäre es Funktionszeiger unterschiedlicher Bezeichnung zu erzeugen und auf dieselbe Methode zeigen zu lassen. Mal abgesehen, daß es (logisch) ziemlich sinnlos ist an einer Stelle einer Methode zwei unterschiedliche Namen zu geben - das würde höchstens der allgemeinen Verwirrung beitragen bei wenn es möglich wäre.
-
ganz kurz Thema Unicode: CString x=_TCHAR("hallo"); CString x3=_TXCHAR("hallo"); CString x2= _T("Hallo2"); CString y=L"Hallo"; _TINT z=5; Warum wird _T & L vom Preprozessor weggewischt, wann wird unicode erzeugt? _tint war mir unbekannt - ist da irgenwas anders als beim normalen int? Was unterscheidet einen _TXCHAR von einem _TCHAR? warum kann ich unter W98 kein Unicode-Programm mit #define _UNICODE erzeugen??? (ich muß es ja nicht laufen lassen können, oder?) Gibt es da einen Trick?
-
Weil ich jetzt das mit der Diamantvererbung so breit getreten habe und Du bestimmt nur 1000 Fragen dazu hast, habe ich mal ein BingDingDong-Beispiel gemacht: class bing { public: bing(int x=0):zahl(0){} virtual ~bing(){}; virtual void set(const int x){zahl=x;} virtual int get() const {return zahl;} private: int zahl; }; class ding : virtual bing { public: ding(){bing::bing();}; virtual ~ding(){bing::~bing();}; void set(const int x){bing::set(x);} void setown(const int x) {zahl=x;} int get() const {return bing::get();} int getown() const {return zahl;} private: int zahl; }; class dong : virtual bing { public: dong(){bing::bing();}; virtual ~dong(){bing::~bing();}; void set(const int x){dong::zahl=x;} int get() const {return dong::zahl;} private: int zahl; }; class dingdong : public ding, public dong { public: dingdong(){ding();} virtual ~dingdong(){ding();} void set(const int x) {ding::set(x);} void set2(const int x){dong::set(x);} int get() const {return ding::get();} int get2() const {return dong::get();} }; main() { dingdong x1; int v1; x1.set2(3); x1.setown(5); v1=x1.get2(); v1=x1.get(); x1.set(2); v1=x1.get2(); v1=x1.get(); v1=x1.getown(); } Durch diese Konstruktion mit der virtuellen Basisklasse kann man übrigens wunderbar Schnittstellen definieren - Methoden der Basisklasse erzwingen, verstecken (Hiding) - und erweitern! Hoffentlich bekommst Du keinen Wadenkrampf von dem Code... =8-D
-
Methoden müssen immer einer Klasse klar zugeordnet sein. Eine "versteckte" Methode darf einfach nicht absolut unsichtbar sein - es wäre nämlich schwer rekonstruierbar, wo sie sich befindet und wie die Implementation davon sein soll. Soll etwas versteckt sein hat man ja noch immer die private: und protected:-Sections um die Methode nach außen hin zu verstecken. Es gibt aber noch einen Zweiten Grund, warum in einer Methode eine weitere Methode nicht deklariert werden darf. Eine Methode ist ein Unterprogrammaufruf. Würdest Du eine zweite Methode innerhalb einer definieren würde das bedeuten Du erschaffst eine Alias-Methode. Das bedeutet eine Methode willst Du unter zwei Namen erzeugen!!! (das hat aber nichts mit der unterschiedlichen Namensvergabe der zwei Methoden zu tun, sondern mit der Deklaration). Eine Methode ist nichts weiter als ein Unterprogramm, welches aufgerufen werden kann. Und ein Unterprogramm kann zwar weitere Unterprogramme aufrufen oder sich selbst, aber nur einmal unter einem Namen existieren (lediglich ein Überschreiben der Methode ist erlaubt, d.h. die Aufrufparameter dürfen variieren). Korrekt wäre es also Zins_Berechnung() noch einmal extra als eigene Methode zu definieren und danach darfst Du dann ohne weiteres von Zins_Lesen() aus Zins_Berechnung() aufrufen! Eine Methode muß einer Klasse ganz klar zugeordnet werden können. Deshalb ist ein "verstecken" vor der Klasse verboten. Ich weiß ja jetzt nicht wie weit Du Dich mit Klassen schon beschäftigt hast, aber wenn man eine Virtuelle Basis-Klasse (sagen wir mal Tier erzeugst mit der Methode Geraeuschmachen()) hat, davon zwei unterschiedliche Klassen (Hund und Katze) ableitet (die Methode Geräuschemachen() beim Hund mit einer Ausgabe "Kläffen" und bei der Katze mit "Miauen" überschreibst) und davon wieder per Mehrfachvererbung eine zusammengesetzte Klasse Katzenhund() (diamantförmige Vererbung), dann tritt (fast) dasselbe Problem auf. Funktionen der virtuellen Tier-Klasse existieren im Katzenhund zweimal - nämlich vom Hund und von der Katze. Wenn die Funktion vom Katzenhund aufgerufen wird muß ich ihm ganz klar sagen ob sie vom Hund oder von der Katze aufgerufen werden soll. Ein Hund kann nämlich nur Kläffen und eine Katze nur Miauen! Dieselbe Methode kann auch hier nur durch erzeugen unterschiedlicher Objekte und der ganz klaren Aufrufunterscheidung durch den Qualifier Katze:: oder Hund:: existieren. Es gibt aber bei der Klassendefinition eine Möglichkeit eine Funktion nach außen hin absolut versteckt zu halten: Durch Klassendeklarationen innerhalb einer Klasse!!! Ich habe mal mit Deinem Beispiel sowas gemacht um es zu zeigen: class Konto { class inneresKonto { public: inneresKonto(){}; ~inneresKonto(){}; float ZinsBerechnung(float Zinssatz,float Kontostand) { float zins; zins = (Kontostand * Zinssatz) / 100; Kontostand += zins; return zins; } }; public: Konto(float x=0):Kontostand(x){} ~Konto(){}; float ZinsLesen(float zins=1.5){return ki.ZinsBerechnung(zins,Kontostand);} private: inneresKonto ki; // trotz allem muß ein Objekt der inneren Klasse als Member-Objekt erzeugt werden! float Kontostand; }; main { Konto k(200); // Mit Kontostand 200 initialisieren float zins; zins=k.ZinsLesen(); // Zins 1,5% auslesen zins=k.ZinsLesen(5); // eigens definierten Zinssatz auslesen } Funktionsdeklarationen in Funktionen sind halt einfach unzulässig!!! Willst Du Aliases von Funktionen erreichen, so kann man das allenfalls noch mit Namespaces erreichen - aber halt nicht innerhalb von Funktionsdeklarationen!!! War das einigermaßen verständlich?
-
Normal ist es jedenfalls bei Umschulungen kein Problem innerhalb des ersten Jahres zu wechseln, weil halt alles bis dahin gleich ist. Bei uns gab es zwischendrin auch einen "Überläufer".
-
@Bigmac Ich kann auch nur aus meiner Erfahrung erzählen - und das war halt ´ne Umschulung - aber nicht vom Sozialamt! (Krankenkasse/Arbeitsamt haben sich gestritten wer die Kosten übernimmt - AA hat verloren).
-
Vielleicht ist hier ja noch ein Hinweis drin versteckt. Jetzt kapiere ich das mit dem Levelorder auch - also die Ebenen einzeln sollen abgeerntet werden. Das ist tatsächlich etwas schwieriger. Vielleicht wäre die Lösung eine doppelt verkettete Liste, welche nicht nur die Baumstruktur enthält, sondern auch noch eine Level-Liste die unabhängig vom lr-Baum verknüpft ist ... sowas hab ich auch noch nicht gemacht oder gebraucht. http://www.csc.uvic.ca/~csc115/slides/7-Trees.ppt http://netdb.chungbuk.ac.kr/~jrshin/algorithm/