Hilfestellung für exception-Sicherheit und RAII



  • Meiner Meinung sollte die Klasse X509 heissen, das X509_new() gehört in den Konstruktor und die Klasse sollte alle fachlichen Methoden haben um mit dem Objekt zu arbeiten.



  • SBond schrieb:

    Ja stimmt 🙂

    Noch mal eine Frage am Rande. Kann ich sowas problemlos machen?:

    std::shared_ptr<X509> meineFunktion()
    {
        std::unique_ptr<X509, decltype(X509_deleter)> myVar1(X509_new(), X509_deleter);
    
        return myVar1.release();
    }
    
    std::shared_ptr<X509> meineFunktion()
    {
        std::shared_ptr<X509> myVar1(X509_new(), X509_free);
    
        // Variante 1
        return myVar1.release();
    
        // Variante 2
        return myVar1;
    }
    

    Ja das war wiklich Blödsinn von mir. Aber der Compiler klopft einen da ja auf die Finger :). Tatsächlich ist der move()-Befehl hier die richtige Wahl. Hatte vor einiger Zeit etwas darüber gelesen, aber da ich noch keine Anwendung fand, geriet es wieder in Vergessenheit. Auch nochmal vielen Dank für den Tipp mit der ()-Überladung. Das ist eine echt gute Ergänzung 🙂

    nochmals vielen Dank für die tolle Unterstützung von euch 😃
    Damit lässt sich der Quellcode viel besser exception-sicherer gestalten, als meine ersten Versuche mit try/catch in jeder Funktion. *freu*


Anmelden zum Antworten