[Bitte Close]Gute methode um Pointer auf Klasse zu erstellen



  • Z.B.:

    Device *device =
                    createDevice(dimension2d<u32>(640, 480));
    
    test* t = device->getTestClass();
    


  • hä?

    das eine ist eine factory funktion. das ist nicht das was du willst (es ist so eine art eingekapselter konstruktor)

    und beim zeiten lässt du dir anhand einer methode über ein bereits erstelltes und initialisiertes objekt einen zeiger auf deine testklasse zurückgeben



  • Skym0sh0 schrieb:

    ...
    einen zeiger auf deine testklasse zurückgeben

    Deswegen will ich wissen ob es so passt, das man new verwendet



  • Da gehört n unique_ptr zurückgegeben.



  • Danke PI habs jetzt auch hinbekommen was ich wollte



  • 314159265358979 schrieb:

    Da gehört n unique_ptr zurückgegeben.

    Prinzipiell gehört da gar nix, erst recht nicht ohne Wenn und Aber ein unique_ptr!



  • Besitzende Zeiger sind Smartpointer, ferner ist der Default-Smartpointer unique_ptr.



  • Bei so einem kurzen Beispiel ist trotzdem nicht ersichtlich, was gegen

    Device device(dimension2d<u32>(640, 480));
    

    spricht.



  • 314159265358979 schrieb:

    Besitzende Zeiger sind Smartpointer, ferner ist der Default-Smartpointer unique_ptr.

    Ich konnte keinen Hinweis darauf finden, dass besitzende Zeiger verlangt wurden. Und dass es einen Default-Smartpointer gibt ist mir neu. Es gibt für unterschiedliche Zwecke unterschiedliche SmartPtr.
    Idealerweise bietet die Factory eine Policy an, welche sich um den return_type kümmert (shared/scoped/proxy/raw/..._ptr). Wenn das nicht gewollt ist, würde ich eher zu rohen Zeigern als return neigen denn zu scoped_ptr, da man sich damit nicht zu früh festlegt - der Benutzer der Factory entscheidet, was mit dem Pointer geschieht. Es wird ein elendiges Gefrickel, wenn ich lieber shared_ptr will, oder meine opinter gleich in nem ptr_container ablege.



  • Przlflz schrieb:

    Ich konnte keinen Hinweis darauf finden, dass besitzende Zeiger verlangt wurden.

    Dazu erfordert es keinen Hinweis. Eine Funktion, die einen besitzenden Zeiger zurückgibt, soll einen Smartpointer zurückgeben.

    Przlflz schrieb:

    Und dass es einen Default-Smartpointer gibt ist mir neu.

    Der Smartpointer, den du im Normalfall verwenden solltest, ist unique_ptr.

    Przlflz schrieb:

    Idealerweise bietet die Factory eine Policy an, welche sich um den return_type kümmert (shared/scoped/proxy/raw/..._ptr). Wenn das nicht gewollt ist, würde ich eher zu rohen Zeigern als return neigen denn zu scoped_ptr, da man sich damit nicht zu früh festlegt - der Benutzer der Factory entscheidet, was mit dem Pointer geschieht. Es wird ein elendiges Gefrickel, wenn ich lieber shared_ptr will, oder meine opinter gleich in nem ptr_container ablege.

    Oder man nimmt einfach ein typedef.



  • 314159265358979 schrieb:

    Dazu erfordert es keinen Hinweis. Eine Funktion, die einen besitzenden Zeiger zurückgibt, soll einen Smartpointer zurückgeben.

    Soll das endlos so weiter gehen? Es gibt keine Festlegung, dass Factories besitzende Zeiger zurückgeben müssen, darum ist klar, dass auch keine smartptr zurückgegeben werden sollen.
    Hast du irgend einen Link, der festlegt, dass Factories besitzende Zeiger zurückliefern sollen?
    Und wozu gibt es dann value_factories? Die liefern gar keine Zeiger zurück...

    Der Smartpointer, den du im Normalfall verwenden solltest, ist unique_ptr.

    Es gibt keinen Normalfall... Es gibt verschiedene Anwendungsfälle, wie bereits gesagt. Nur weil bestimmte Konstellationen häufiger anzutreffen sind, ist das nicht der Normalfall.

    Oder man nimmt einfach ein typedef.

    Wie sieht das dann aus? Wohin mit dem typedef? Wartbarkeit? Übersichtlichkeit? Abhängigkeit einzelner Module?



  • Przlflz schrieb:

    Es gibt keinen Normalfall... Es gibt verschiedene Anwendungsfälle, wie bereits gesagt. Nur weil bestimmte Konstellationen häufiger anzutreffen sind, ist das nicht der Normalfall.

    Ich würde Menschen mit zwei Augen schon als Normalfall bezeichnen. 😉



  • Mit dir zu diskutieren bringt absolut nichts. Du bist nicht in der lage, sinnerfassend zu lesen.



  • cooky451 schrieb:

    Ich würde Menschen mit zwei Augen schon als Normalfall bezeichnen. 😉

    Nicht nur Menschen. Liegt aber nicht daran, weil irgend ein Gott festgelegt hat, dass Tiere 2 Augen haben sollen, sondern weil räumliche Wahrnehmungsfähigkeit einen immensen Vorteil bringt.

    Mit dir zu diskutieren bringt absolut nichts. Du bist nicht in der lage, sinnerfassend zu lesen.

    Und was ist der Sinn, den ich nicht erfasse?

    Da gehört n unique_ptr zurückgegeben.

    Das ist eine absolute, immer gültige Aussage. Damit bin ich nicht einverstanden, auf Hinweise kommen nur allgemeine, nicht belegte persönliche Meinungen zurück.



  • Przlflz schrieb:

    Liegt aber nicht daran, weil irgend ein Gott festgelegt hat, dass Tiere 2 Augen haben sollen

    Nicht alle Tiere haben zwei Augen.



  • EOP schrieb:

    Przlflz schrieb:

    Liegt aber nicht daran, weil irgend ein Gott festgelegt hat, dass Tiere 2 Augen haben sollen

    Nicht alle Tiere haben zwei Augen.

    Welche nicht? Oder kommt jetzt sowas lahmes wie Facettenaugen?



  • Jaja "Gute methode um Pointer auf Klasse zu erstellen" und "Ich will ein Haustier mit 3 Augen" hat relativ viel miteinander zu tun.


Anmelden zum Antworten