verständnisproblem mit c++
-
hallo,
ich hab hier eine zeile die ich nicht verstehe, also das mit den zwei doppelpunkten(::) am >anfang<

[cpp]**::**HWND select_window (void)
{
// Alle Fenster auflisten
**::**EnumWindows (EnumWindowsProc, 0);[/cpp]danke schon maa

-
Dabei geht es um Namensräume. Mit "::Bezeichner" sprichst du den Bezeichner im globalen Namensraum an, falls es diesen auch im lokalen Namensraum gibt.
Ein kleines Stückchen Quelltext zur Veranschaulichung:// globale Variable: int blubb; class Foo { public: void bar() { // Setzt die Klassen-Variable auf 5 blubb = 5; // Setzt die globale Variable auf 10 ::blubb = 10; } private: int blubb; };Das geht natürlich nicht nur mit Variablen, sondern auch beim Ansprechen von Typen, Funktionen und weiß der Teufel was

-
danke Badestrand!

-
cooles Beispiel;)
-
BorisDieKlinge schrieb:
cooles Beispiel;)
sinnloser Beitrag;)
-
Sinnloses Mitglied Machine schrieb:
sinnloser Beitrag;)
-
Kann man das auch auf Namensräume von Funktionen beziehen?
int bla; void func () { int bla; // Setzt die lokale Variable auf 5 bla = 5; // Setzt die globale Variable auf 10 ::bla = 10; }
-
drccpp schrieb:
Kann man das auch auf Namensräume von Funktionen beziehen?
int bla; void func () { int bla; // Setzt die lokale Variable auf 5 bla = 5; // Setzt die globale Variable auf 10 ::bla = 10; }Sowas kann man auch ausprobieren...

-
Üblicherweise nennt sich das Bereichsoperator.
-
drccpp schrieb:
Kann man das auch auf Namensräume von Funktionen beziehen?
Badestrand schrieb:
Das geht natürlich nicht nur mit Variablen, sondern auch beim Ansprechen von Typen, Funktionen und weiß der Teufel was

Lesen, ausprobieren, wissen.
-
Tachyon schrieb:
Sowas kann man auch ausprobieren...

Das ist genau die falsche Lösung.
Wenn ein Compiler das macht, bedeutet das nicht zwangsweise, dass das dem Standard entspricht. Also die Frage ist absolut berechtigt. Ausprobieren ist gut, aber bei Zweifeln sollte man das hinterfragen, bzw. im Forum fragen
.