unique_ptr und kleines problemchen



  • Hallo,

    folgender Code:

    typedef std::unique_ptr<std::error_code> error_code_ptr;
    
    class Filesystem
    {
    	public:
    		Filesystem();
    		~Filesystem();
    
    		void copyFile(const std::string &source, const std::string &dest, bool overwrite);
    
    	private:
    		error_code_ptr ec_;
    	};
    }
    
    void Filesystem::copyFile(const std::string &source, const std::string &dest, bool overwrite)
    {
    	overwrite = !overwrite;
    	auto ret = CopyFileA(source.c_str(), dest.c_str(), overwrite);
    
    	if (ret == 0)
    	{
    		ec_->assign(GetLastError(), file_category());
    	}
    }
    

    Wenn beim kopieren ein Fehler auftritt und dem error_code_ptr mit der Methode assign der Fehlercode zugewiesen werden soll stürzt das Programm einfach ab.

    Kann mir da jmd. weiterhelfen? Ich muss auch gestehen, dass ich bei den Smartpointern noch nicht wirklich durchblicke.

    Grüße



  • Du dereferenzierst einen Nullzeiger. Initialisiere ec_ .



  • Warum benutzt du da überhaupt einen Poiter?



  • Besser: nutze direkt std::error_code.


Anmelden zum Antworten