将一个常量未签名的长流流式传输到流



我正在用std类和算法替换一些遗留代码,并正在替换旧的文件类。

obj 有一个未签名的长成员 myUL

inline std::fstream& operator <<(std::fstream& rwf, const obj var)
{
    rwf << var.myUL;
    return rwf;
}

这不会编译,但我的大脑冻结了为什么! 错误消息抱怨它"在尝试匹配参数列表'(std::fstream,无符号长)'时找不到重载

我试过了

inline std::fstream& operator <<(std::fstream& rwf, const obj var)
{
    unsigned long ul = var.myUL;
    rwf << ul;
    return rwf;
}

但这也会失败(我认为通过非常量无符号长可能会有所帮助,因为它const_casting无效)。

但是 fstream 对无符号的长头有重载,因为我在我的测试程序中使用它。 我猜问题与类的常量有关,但是const_casting clas 失败并显示消息:

转换

需要构造函数或用户定义的转换运算符, 不能被const_cast或reinterpret_cast使用

如果可能的话,我宁愿在不修改该类代码的情况下执行此操作。

作为对以下内容的回应,非常好的答案 - 我已经尝试了相同的方法并添加了 #include 行,但没有帮助。

如果我删除函数中的 const 限定符,它会按预期工作,但我宁愿不这样做。

可以在以下位置看到显示此问题的代码:

运动中出错...

在测试代码时,它会给出您报告的错误。我添加了#include <fstream>,一切正常。

相关内容

  • 没有找到相关文章

最新更新