返回错误:“无法从'std :: ofstream {aka std :: basic_ofstream <char>}'转换为bool”错误

时间:2019-06-24 16:54:14

标签: c++ c++11 c++14

我已经编写了这段代码

ofstream f(<namefile>);

f.write(reinterpret_cast<const char *>(&ins.num_dip),
    sizeof(ins.num_dip));

f.write(reinterpret_cast<const char *>(ins.dip),
    ins.num_dip * sizeof(char));

return f;

但是我不明白我在哪里错了,你能帮忙吗?

1 个答案:

答案 0 :(得分:1)

允许将std::ostream(和其他std流)转换为bool的转换运算符是显式的,这意味着它只能用于显式强制转换和上下文转换为bool(例如内部条件)。返回布尔值不是上下文转换为bool,因此强制类型转换必须是显式的:

return static_cast<bool>(f);

您还可以使用适当的吸气剂代替强制转换:

return !f.fail();