Why do I make "use of deleted" function when passing a std::ofstream as parameter?

user3050386 picture user3050386 · Jul 28, 2015 · Viewed 7.1k times · Source

I have a member that is std::ofstream fBinaryFile and a

void setFile( std::ofstream& pBinaryFile ) 
{
    fBinaryFile = pBinaryFile;
}

output:

 Data.h:86:16: error: use of deleted function ‘std::basic_ofstream<char>& std::basic_ofstream<char>::operator=(const
 std::basic_ofstream<char>&)’
     fBinaryFile = pBinaryFile;
                 ^

I understood that copy in std::ofstream is not allowed and maybe I'm missing something. Is possible save the content of pBinaryFile in fBinaryfile?

Answer

Alexander Balabin picture Alexander Balabin · Jul 28, 2015

Because the relevant operator is declared as

ofstream& operator= (const ofstream&) = delete;

which means it is explicitly prohibited so ofstream semantics does to support copying.

Depending on your architecture you can store a pointer/reference or move it.