Hab ich hier eventuell etwas nicht berücksichtigt?



  • public var schrieb:

    was spricht gegen eine get-memberfunktion?

    Ist der Private-Breich eines Objekts nicht in so fern geschützt, dass man Veränderungen NUR innerhalb der Klasse und deren Methoden vornehmen kann? Selbst wenn ich dann den Pointer per return zurückgebe und an die WinAPI-Funktion übergebe, sobald die Funktion den Inhalt ändern will, stürzt das Programm ab. Oder liege ich da falsch?



  • Liegst falsch!



  • Ich bin ja froh, dass einige hier so humorvoll sind. Hast du keinen Nick oder wie?

    Ich hab's jetzt umgestellt, der Pointer ist nun private und wird per get_pointer() zurückgegeben. Ich hatte wohl damals was unglücklich falsch gemacht wodurch ich nun irrtümlich dachte, der Speicherbereich sei besonders geschützt, sodass man da eben nur durch klasseneigene Methoden reinschreiben kann. Damals gabs eben, wie gesagt, einen Speicherfehler, damit hatte sich das dann für mich erledigt.
    Aber ich habs jetzt umgeändert.



  • Würde nicht auto_ptr aus der STL (memory) das selbe machen?



  • gurru schrieb:

    Würde nicht auto_ptr aus der STL (memory) das selbe machen?

    hier is es etwas doof, da der pointer keinen op[] hat.(Ansonsten is es natürlich ok, wenn man mit dem vergleicht, was der threadstarter benutzt 😃 )



  • otze schrieb:

    gurru schrieb:

    Würde nicht auto_ptr aus der STL (memory) das selbe machen?

    hier is es etwas doof, da der pointer keinen op[] hat.(Ansonsten is es natürlich ok, wenn man mit dem vergleicht, was der threadstarter benutzt 😃 )

    Es wäre aber einfacher, die Klasse dann von auto_ptr abzuleiten, und dann darin den Operator[] zu definieren.



  • otze schrieb:

    Ansonsten is es natürlich ok, wenn man mit dem vergleicht, was der threadstarter benutzt 😃

    🙄
    das ist noch doofer, hier std::auto_ptr zu benutzen, als was threadstarter vorgeschlagt hat 😉
    Werf mal enen Blick in std::auto_ptr::~auto_ptr. Da findest zu sowas:

    ~auto_ptr() 
    {
      delete _M_ptr; 
    }
    

    ⚠ Das nennt sich Undefined behaviour, da hier operator delete [] benutzt werden muss. Also bitte boost::scoped_array anstatt std::auto_ptr benutzen!!!



  • gurru schrieb:

    Es wäre aber einfacher, die Klasse dann von auto_ptr abzuleiten, und dann darin den Operator[] zu definieren.

    😡



  • Es wäre aber einfacher, die Klasse dann von auto_ptr abzuleiten, und dann darin den Operator[] zu definieren.

    Ja ne is klar...



  • ssm schrieb:

    das ist noch doofer, hier std::auto_ptr zu benutzen, als was threadstarter vorgeschlagt hat 😉
    Werf mal enen Blick in std::auto_ptr::~auto_ptr. Da findest zu sowas:

    ~auto_ptr() 
    {
      delete _M_ptr; 
    }
    

    OK, das hab ich übersehen. (Also vergessen)


Anmelden zum Antworten