Was bedeuten zwei Doppelpunkte in C++ genau ?



  • Hi @all,

    ich hab vor kurzem erst angefangen in Visual C++ zu programmieren, hab mich jedoch innerhalb der letzten 3 Tage sehr intensiv mit Cpp auseinandergesetzt - vor allem weil ich mir ein Buch über C++ gekauft hab. Bis jetzt hab ich eigentlich alles verstanden...jedoch stoße ich nach ein paar Seiten immer wieder auf Anweisungen mit zwei Doppelpunkten 😞
    Und genau da liegt mein Problem. Schaut euch mal folgenden Code an:

    CTime::GetCurrentTime();

    Im Gegensatz dazu:

    (HBITMAP)::LoadImage (...);

    Wann benutzt man eigentlich die zwei Doppelpunkte, gefolgt von dem Befehl ?
    Ich mein, man muss doch eigentlich erst eine Variable deklarieren oder? Also z.B. so:

    CTime lTime;
    lTime.GetCurrentTime();

    Was ist an dem Aufruf mit den zwei Doppelpunkten anders ???
    Und wann muss ich das, was vor den beiden Doppelpunkten steht, einklammern,
    wie im 2. Beispiel ?

    Wäre echt nett, wenn ihr mir da helfen könntet
    Schönen Gruß
    Xzibit



  • Es hat was mit dem Scope zu tun. Lies ein gutes Buch dazu.

    Bye, TGGC (Pipe my World.)



  • *lol* ...sehr witzig - wenn ich eins hätte in dem genau das drinstehen würde,
    dann würde ich ja diese Frage nicht hier im Forum posten oder ???? (->Logik ?)

    Kann mir das denn keiner erklären ?
    Oder kennt jemand nen Link, wo das beschrieben ist ?
    (Ich nehm alles, sogar wenns nur ein Tip ist, wo das
    in der MSDN Library steht) _



  • Tja, musst mal eins kaufen/ leihen.

    Bye, TGGC (Pipe my World.)



  • hier wirst du sicher fündig
    http://www.c-plusplus.net/cms/modules.php?op=modload&name=Downloads&file=index&req=viewsdownload&sid=2

    den doppelpunkt kann man auch "bereichszugriffsoperator" nennen, eine schreckliche übersetzung ... aber vielleicht hilfreich zum verständnis.



  • oder simpel aufgedrückt

    class foo
    {
    public:
      void func(); //funktion der klasse
      static void static_func(){} //statische funktion der klasse ( brauch keine instanz )
    };
    
    void func(){}//globale funktion
    
    void foo::func() //funktion der klasse
    {
      ::func(); // ruft die globale funktion func auf
      func(); // ruft die funktion der klasse auf
    
      //innerhalb der klasse gäbs sonst probleme die zwei zu unterscheiden
    }
    
    int main()
    {
      foo::static_func(); // ruft die statische funktion func auf ohne ne instanz zu erstellen
    return 0;
    }
    

Anmelden zum Antworten