提问人:stillQuestioning 提问时间:9/7/2023 更新时间:9/7/2023 访问量:34
ofstream 类实例无法编译的问题
Issue with ofstream class instance not compiling
问:
我在 C++ 类中使用 ofstream 写入文件时遇到了问题。我创建了一个最小的示例来说明这个问题:
#include <iostream>
#include <fstream>
class Aclass {
private:
std::ofstream historyFile;
public:
Aclass() {
historyFile.open("test.txt");
if (!historyFile.is_open()) {
std::cerr << "Error: Unable to open file for writing: test.txt" << std::endl;
}
}
void writeFile() const {
historyFile << "sometext";
historyFile.close();
}
void writeFile2() const{
std::ofstream ofs ("test.txt");
ofs << "sometext";
ofs.close();
}
};
int main() {
Aclass instance;
instance.writeFile();
std::cout << "Finished writing to file" << std::endl;
return 0;
}
writeFile
抱怨
没有运算符“<<”与这些操作数匹配 -- 操作数类型为: const std::ofstream << const char [9]
和
对象具有与成员函数不兼容的类型限定符 “std::basic_ofstream<_CharT, _Traits>::close [with _CharT=char, _Traits=std::char_traits]” -- 对象类型为: const std::ofstream
对于后续行
我正在使用 g++ (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0
为什么第二个实现编译和运行,而不是第一个?似乎两者应该是等价的?
答: 暂无答案
评论
const
writeFile()
const
writeFile2
const
在函数上表示所有成员变量都假装为 。 不是成员变量,因此不受影响。const
ofs