我搜索过高低,但没有找到答案,所以请原谅这是否重复。
我有一些非常古老的C ++代码,我试图轻易地转换成这个千年。代码仍然在Visual Studio 6中编译并且需要继续这样做,但我也试图让它在Visual Studio 2017中运行。我之前已经完成了这个,但是对头文件等进行了很多更改,这次我是尝试更加谨慎的方法。
代码已经使用了stl和非stl,旧的和新的io标题等混合,所以它等待爆炸一团糟。
作为一个简单的开始,我只是用iostream替换了iostream.h,看看会发生什么。我得到了一些编译器错误,其中代码中包含:: 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类具有&lt;&lt;&lt;&lt;&lt;&lt;运营商:
inline std::ostream& operator<<(std::ostream& os, const PrinterOption& po)
{
os << "(" << po.Installed() << ", " << po.Enabled() << ")";
return os;
}
答案 0 :(得分:1)
我不知道是否是这种情况但是如果你实现了一个函数的主体INSIDE类头文件删除内联关键字,我有一个类似的问题,我浪费了2-3整天和大量的重新编码实现此...