Class im Global Scope



  • Hallo Gemeinde,

    ich habe hier ein kleines Verständnisproblem in der Verwendung von Klassen. Ich komme einfach nicht dahinter wo der Sinn ist.

    Ich habe hier eine Testklasse (test.h):

    CTest
    {
    public:
      CTest();
    }
    

    Wenn ich jetzt diese Klasse verwenden will, baue ich das folgendermaßen auf.

    #include "test.h"
    
    void foo()
    {
      CTest *test = new CTest;
    }
    

    so weit so gut, aber was hat das zu bedeuten, wenn ich folgendes in meinen Global Scope schreibe:

    class CTest;
    
    void foo()
    {
      CTest *test = new CTest;
    }
    

    Kann mir jemand erklären was das class CTest im Global Scope zu bedeuten hat? Mein Code funktioniert so oder so, sprich ich komme nicht dahinter, was der Verwendungszweck ist.

    so long
    jd



  • class CTest;
    

    ist eine Vorwärtsdeklaration auf eine Klasse, das brauchst du zum beispiel wenn du die klasse in der gleichen File hinter der Funktion hinschreibst, da du aber die klasse in einer anderen Headerdatei hast und die einbindest brauchst du Class CTest nicht



  • Ahh ok, verstehe.

    Danke für die Hilfe.



  • jd schrieb:

    ...
    Wenn ich jetzt diese Klasse verwenden will, baue ich das folgendermaßen auf.

    #include "test.h"
    
    void foo()
    {
      CTest *test = new CTest;
    }
    

    Ich hoffe du hast das delete nur in diesen Beispiel weggelassen (Wenn du schon Objekte auf den Heap anlegst [was in C++ nicht zwangsweise nötig ist], gehört zu jeden new auch exakt ein delete).


Anmelden zum Antworten