ofstream 类实例无法编译的问题

Issue with ofstream class instance not compiling

提问人:stillQuestioning 提问时间:9/7/2023 更新时间:9/7/2023 访问量:34

问:

我在 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

为什么第二个实现编译和运行,而不是第一个?似乎两者应该是等价的?

C++ IOSTREAM ofstream 文件写入

评论

2赞 HolyBlackCat 9/7/2023
它告诉你出了什么问题(以一种稍微模糊的方式)。无法写入流。const
0赞 stillQuestioning 9/7/2023
通过从 writeFile() 中删除 const,它似乎可以编译和工作。为什么它适用于同样是 const 的 writeFile2?
0赞 273K 9/7/2023
是你的同学吗?stackoverflow.com/questions/77054929/......
0赞 Some programmer dude 9/7/2023
在尝试修改成员变量时,该函数被标记为表示它无法修改成员变量。该函数不会尝试修改成员变量。writeFile()constwriteFile2
2赞 HolyBlackCat 9/7/2023
const在函数上表示所有成员变量都假装为 。 不是成员变量,因此不受影响。constofs

答: 暂无答案