为什么我要使用删除的"传递std :: ofstream作为参数时的函数?

时间:2015-07-28 10:59:51

标签: c++ ofstream

我的成员是std::ofstream fBinaryFile

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

输出:

 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;
                 ^

我知道std::ofstream中的副本不被允许,也许我错过了一些东西。可以在pBinaryFile中保存fBinaryfile的内容吗?

2 个答案:

答案 0 :(得分:9)

因为相关运算符被声明为

ofstream

这意味着它被明确禁止,因此def Job1 = 'FromTemplate-testJob' job { name Job1 steps { batchFile( "echo Hello > out5.txt" ) batchFile( "echo custard > op4.txt" ) } } 语义可以支持复制。

根据您的架构,您可以存储指针/引用或移动它。

答案 1 :(得分:0)

如果要将pBinaryFile的内容复制到fBinaryFile,则需要将pBinaryfile声明为ifstream(输入文件流),而不是ofstream(输出文件流) 看起来应该是这样的:

std::ifstream pBinaryFile;
std::ofstream fBinaryFile;
std::stringstream sstream;
std::string line
pBinaryFile.open(pBinaryFileName.c_str());
fBinaryFile.open(fBinaryFileName.c_str());
if (pBinaryFile.isopen()) {
    while (pBinaryFile.good()) {
        getline(pBinaryFile, line);
        fBinaryFile << sstream(line) << endl;
    }
}
pBinaryFile.close();
fBinaryFile.close();

请注意,pBinaryFileName和fBinaryFileName引用文件的路径。

此代码中可能存在错误,但我认为解决方案与此类似。

我建议进一步阅读:

http://www.cplusplus.com/doc/tutorial/files/