gpt4 book ai didi

C++ 运算符 << 调用::ostream 而不是 std::ostream

转载 作者:行者123 更新时间:2023-11-30 05:08:27 25 4
gpt4 key购买 nike

我到处搜索,但没有找到答案,所以如果这是重复的,请原谅。

我有一些非常古老的 C++ 代码,我正试图将它们轻松地转换为这个千年。代码仍然在 Visual Studio 6 中编译并且需要继续这样做,但我也在尝试让它在 Visual Studio 2017 中工作。我之前已经这样做过,但是对头文件等进行了许多更改,这次我是尝试更慎重的方法。

代码已经混合使用了 STL 和非 STL、旧的和新的 io header 等,所以它一团糟,等待爆发。

作为一个简单的开始,我只是将 iostream.h 替换为 iostream 以查看会发生什么。我在代码中有::ostream 的地方遇到了一些编译器错误,因此将其更改为 std::ostream 解决了该问题。接下来我遇到了重载 << 运算符的问题,其中的所有位都使用 std::iostream,但似乎 << 命令正在尝试使用 ostream(或 basic_ostream)。

我错过了什么?我假设我必须更改更多导入旧 io 类的头文件。

inline std::ostream& operator<<(std::ostream& os, const PrinterInfo& pi)
{
os << pi.Idx() << ": " << pi.Name() << ", "
<< PrinterInfo::MapPrinterType(pi.GetPrinterType()) << ", "
<< PrinterInfo::MapPaperType(pi.GetPaperType()) << ", "
<< PrinterInfo::MapPrintFormat(pi.GetPrintFormat()) << ", "
<< PrinterInfo::MapRasType(pi.GetRasType()) << ", "
<< PrinterInfo::MapNPS(pi.NPS()) << ", "
<< "dpx = " << pi.Duplex() << ", "
<< "tray = " << pi.Tray2() << ", "
<< "port = " << pi.PortNo();

return os;
}

PrinterInfo 类也有 << 运算符的覆盖:

    inline std::ostream& operator<<(std::ostream& os, const PrinterOption& po)
{
os << "(" << po.Installed() << ", " << po.Enabled() << ")";
return os;
}

最佳答案

我不知道是否是这种情况,但如果你在类头文件中实现函数体,删除 inline 关键字,我遇到了类似的问题,我浪费了 2-3 整天的时间和大量的重新编码来实现这……

关于C++ 运算符 << 调用::ostream 而不是 std::ostream,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46832267/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com