wieso ist das so mit dem funktionsaufruf??



  • Kann mir bitte einer erklären warum ich in einem cpp file das den korrekten header includiert, angeben muß das der konstruktor CSocketClass() von der Klasse CSocketClass() kommt (durch den "::")
    Normalerweise schaut der Kompiler doch in das .h file und findet dort die deklaration der funktion oder??

    Das File heißt SocketClass.cpp

    //Dieser header wird includiert
    #include "SocketClass.h"

    CSocketClass::CSocketClass()
    {
    ......
    }

    herzlichen dank schonmal

    lg
    l00P



  • weil es nicht besonders sinnvoll wäre, dafür eine Sonderregel einzuführen. Bei normalen Memberfunktionen würde das nämlich nicht funktionieren:

    class Foo {
      void foo();
    };
    
    void foo() { ... } // normale globale Funktion, wenn man nicht Foo::foo schreibt
    


  • Ah ich verstehe demnach wären in meinem file

    CSocketClass()
    und
    CSocketClass()::CSocketClass()

    zwei verschiedene funktionen, die eine member und die andere einfach nur global..

    ist das so?

    herzlichen dank an dich.

    lg l00P



  • struct foo {
      foo();
    };
    
    foo() {
    }
    

    ist in C++ sogar ein Fehler, in C (< C99) wär das gültig, wegen implizit int AFAIK (dann geht das aber mit den MemberFunktionen nicht mehr ;))


Anmelden zum Antworten