0

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

obj 有一个 unsigned long 成员 myUL

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

这不会编译,但我对为什么会冻结!错误消息抱怨它“在尝试匹配参数列表'(std :: fstream,unsigned long)'时找不到重载”

我努力了

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

但这也失败了(我认为通过非 const unsigned long 可能会有所帮助,因为 const_casting 它是无效的)。

但是当我在我的测试程序中使用它时,fstream 对 unsigned longs 有一个重载。我猜这个问题与类的 const 有关,但是 const_casting 类失败并显示以下消息:

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

如果可能的话,我宁愿这样做而不修改该类代码。

针对以下问题,非常好,答案 - 我尝试了同样的方法并添加了 #include 行,但它没有帮助。

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

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

动作错误...

4

1 回答 1

1

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

于 2013-11-13T16:37:00.473 回答