fstream& fileReading(const string& signalFile, const string& backgroundFile){
ofstream fileName;
fileName.open(signalFile, ios::in | ios::binary);
//does more stuff here
return fileName;
}
我收到以下错误消息:
非常量左值引用类型' fstream'不能绑定到不相关类型的值' ofstream'。
我不确定这意味着什么或为什么我收到它。
我觉得它与fstream和ofstream的声明有关。
当我将返回类型更改为ofstream时,我收到一条消息,指出: 引用与本地变量' fileName'相关联的堆栈内存。返回。
我想帮助理解所有这些意味着什么以及如何重构函数/方法来返回我将创建和写入的文件。
非常感谢任何帮助。初学者在c ++中必须动态学习语言。
答案 0 :(得分:2)
这里有两个问题:
您正在尝试返回对本地对象的引用;对象在作用域的末尾被销毁,然后你会返回对它的引用;这是无效的。考虑返回一个实例,而不是引用。
您正在尝试返回与函数应返回的对象不同的对象。考虑更改函数以返回ofstream实例,然后确保通过移动返回它:
std::ofstream fileReading(const string& signalFile,
const string& backgroundFile)
{
return std::ofstream{ signalFile, ios::in|ios::binary };
}
答案 1 :(得分:0)
您必须返回文件处理程序(& fileName)的地址而不是fileName,因此您的代码必须是:
fstream& fileReading(const string& signalFile, const string& backgroundFile){
ofstream fileName;
fileName.open(signalFile, ios::in | ios::binary);
return fileName;
}
你必须按照以下方式调用此功能:
fstream* fileHandlerPointer = fileReading("sample.txt" , "sample2.tct");