+ Operator überladen funktioniert nicht richtig



  • Ynnus schrieb:

    Wie überprüfe ich denn die korrekte Handhabung mit dem Pointer? Ich brauche den vor Allem auch, um ihn an diverse WinAPI-Funktionen als Buffer zu übergeben. Und da ist eben das Problem, dass diese Funktionen dort hinein schreiben und ich nicht sehe was genau die machen. Wie soll man da überprüfen, dass mit dem Pointer korrekt gehandhabt wurde?

    So 'ne richtig zufrieden stellende Lösung hab ich dafür auch noch nicht gefunden. Ich mach es idR so, dass ich der Klasse eine resize() Funktion spendiere. Vor dem Aufruf der WinAPI Funktion, rufe ich dann resize() mit einer entsprechenden Grösse auf, um der Sequenz (in deinem Fall ein String) eine entsprechende Mindestlänge zu verpassen. Der WinAPI Funktion übergebe ich dann den Anfang des internen Puffers, zB &foo[0] oder &foo.front(), und die Länge (foo.length()), damit sie weiss, wieviel sie maximal reinschreiben darf. Nach dem Aufruf korrigiere ich die Länge wieder mit resize(), je nachdem, wieviel die WinAPI Funktion reingeschrieben hat.



  • Eine set_size(int size) Funktion hab ich auch schon drinne jetzt. Bei den WinAPI Funktionen muss man ja sowieso immer die Größe des Buffers angeben, demnach setze ich vorher die Größe, übergebe den pointer und teile die maximale Länge mit. Also so wie du das vorgeschlagen hast, im Grunde genommen.


Anmelden zum Antworten