c++ - 在使用 ifstream 时使用已删除的函数

标签 c++

我正在尝试打开一个文件并将其处理程序保存在一个结构中,然后将该结构插入到一个映射中。这是我写的一个简单的代码片段。我得到 use of deleted function 编译错误。是不是因为无法复制ifstream类型的fileHandle所以无法复制整个struct?我该如何解决这个问题?

typedef struct speedEntry
{
    std::ifstream fileHandle;
} speedEntry_t;

std::map<uint32_t, speedEntry_t> allSpeed;

speedEntry_t entry = {};

entry.fileHandle.open("path_to_file", std::ifstream::in);
if(!entry.fileHandle.is_open())
    throw an error here;

allSpeed.insert(std::make_pair(1, entry));

最佳答案

ifstream 不可复制,您的代码试图复制将它们插入到 allSpeed 映射中,将执行插入的代码行更改为此

allSpeed.insert(std::make_pair(1, std::move(entry)));

即将 entry 对象移动到 map 中

关于c++ - 在使用 ifstream 时使用已删除的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44756798/

相关文章:

c++ - Visual C++ (2008) 调试快照

c++ - 将绑定(bind)函数分配给 std::function

c++ - 第二次调用共享对象崩溃

c++ - 使用 Armadillo 矩阵库时用于 C++ 代码的 Makefile

c++ - 单词之间的摩尔斯电码空格问题

C++ 箭头运算符等价物

c++ - 在类中使用指针数组

c++ - 如何修复基类中的内存分配错误?

c++ - 将可变数量的参数传递给模板类

c++ - 如何摆脱波动性?