Static Member Funktion soll Pointer zurückgeben



  • Hallo,

    ich habe eine Klasse:

    class Test
    {
    private:
      char dummy[123];
      int dumb_member_var;
    
    public:
      Test();
      ~Test();
    
      static Test* newTest()
      {
        Test* newObj = new Test();
        newObj->dumb_member_var = 1337;
        return newObj;
      }
    };
    
    /////// ANYWHERE ELSE
    
    Test* initiatedObj = Test.newTest();
    

    So soll das ganze aussehen. Leider will das nicht so, wie ich.
    Der Compiler gibt mir folgenden Fehler: "expected primary-expression before '.' token".

    Ich weiß, dass ich das ganze auch mit dem Konstruktor und dem new Operator machen kann, das Ding ist nur, ich würde das ganze gerne aus Stilgründen so lassen.
    Der Konstruktor soll ein leeres Objekt erzeugen und der Aufruf der static-Funktion ein bereits gefülltes, initialisiertes zurückgeben. Am besten den Pointer auf ein mit new erstelltes Objekt.

    Danke, MfG DerCoder



  • Java-Stil ist meistens kein guter C++-Stil.

    Statische Methoden ruft man mit :: auf, also Test* initiatedObj = Test::newTest();



  • Eisflamme schrieb:

    Java-Stil ist meistens kein guter C++-Stil.

    Wieso nicht?

    Danke für die rasche Antwort.



  • Weil Java rein objektorientiert ist (oder sein will) und C++ deutlich mehr Paradigmen und andere Sprachmittel unterstützt. Aber eigentlich war der Satz unangebracht, denn das ist ja auch nicht zwangsläufig guter Javacode.

    Aber das hier aus Stilgründen so zu lassen (nicht auf Grund von einer bestimmten Zweckmäßigkeit) ist wie zu sagen, dass ich auf Grund von Gesundheitsgründen lieber bei McDonalds esse.



  • In C++ legt man Objekte grundsätzlich auf dem Stack an, nix new.

    my_type my_var(param1, param2, ...);
    my_var.foo();
    

    Wenn du doch new brauchen solltest (was so schnell nicht der Fall sein wird), dann guck dir mal unique_ptr an.


Anmelden zum Antworten