PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Was sind Handles?


bulla
2003-03-17, 05:26:42
Hi
Beim Lernen von c++ gibt es bei mir noch einige Schwierigkeiten. Ich habe bisher nur mit Java zu tun gehabt und habe da einige Umdenk-Schwierigkeiten :)
Momentan betrifft das das Thema Handle`s und Namespace. Ich habe mir einige Tutorials bei www.gametutorials.com zu Gemüte geführt und darin tauchen diese Sachen z.T. auf, Handle bei Konsolen-Programmierung und Namespace immer :P

Mein Verständnis von Handle`s geht momentan soweit, dass ich glaube, dass es eine Art "Erlaubnis" für eine Ein- oder Ausgabe ist (wie gesagt, bei den Beispielen oben).

http://www.gametutorials.com/download/C++/ConsoleFunctionsIntro_Cpp.zip

Vielleicht kann sich ja einer meiner Erbarmen und mir das nochmal anhand einiger Beispiele präzisieren.

Demirug
2003-03-17, 07:46:17
Ein namespace ist nichts anderes als die möglichkeit mehrer Klassen zusammen zu fassen. Das ist ganz praktisch wenn man mehrer Bibliotheken benutzt und dort unter umständen in zwei oder mehreren eine Klasse mit dem gleichen Nahmen vorkommt. In solchen Fällen kann man dann mit hilfe eines Namespaces bestimmen welche Klasse man den nun wirklich meint. Wenn einen Bibliothek nun in einem solchen Namespace liegt man aber nicht jedesmal den Namespacenamen schreiben möchte kann man den Compiler mit using <namespacename> dazu bringen das er jedesmal wenn er einen Klassennamen auflösen soll auch in den bei using angegeben namespaces sucht.

Ein Handle ist keine C++ Sache sondern kommt in diesem Beispiel von Windows. Windows benutzt für alles was mit Systemobjekten (Dateien, Programme, Threads, Fenster, ...) zu tun hat Handles. Ein solches Handle ist technisch gesehen nichts anderes als eine Nummer mit der Windows bestimmen kann welches Systemobject man nun bei einem Funktionsaufruf genau meint.

Exxtreme
2003-03-17, 12:03:03
Originally posted by bulla
Mein Verständnis von Handle`s geht momentan soweit, dass ich glaube, dass es eine Art "Erlaubnis" für eine Ein- oder Ausgabe ist (wie gesagt, bei den Beispielen oben).

Nicht ganz. ;)
Handles werden meist in C verwendet und sind in C++ meist nur noch aus Kompatibilitätsgründen enthalten da Objekte auch ihre Daten enthalten.
Ein Handle ist meist eine Struktur (struct), die einige Werte speichert. In C sind Funktionen und Daten getrennt. Und damit die Funktion weiss, was man gerade ändern will, wird dieses Handle mitübergeben. Angenommen du öffnest 4 Dateien gleichzeitig und willst was in Datei #2 was speichern. Das Handle, welches die Funktion fopen liefert, benutzt man dann in der Funktion fwrite, damit fwrite weiss, welche Datei überhaupt gemeint ist.

bulla
2003-03-17, 21:42:54
ahaaaaa, nun wirds etwas klarer, danke für die antworten :)