私は高低を検索しましたが、答えが見つかりませんでしたので、これが重複している場合はご容赦ください。C++演算子<< std :: ostreamの代わりにostreamを呼び出す
私はこの千年紀に軽く変換しようとしている非常に古いC++コードを持っています。コードはVisual Studio 6でまだコンパイルされていますが、これを続行する必要がありますが、Visual Studio 2017でも動作させるようにしようとしています。これを前に行いましたが、ヘッダーファイルなどに多くの変更を加えました。より測定されたアプローチを試みる。
このコードでは、すでにstlとnon-stl、古いものと新しいioヘッダなどが混在しているため、爆発するのを待っています。
簡単なスタートとして、iostream.hをiostreamに置き換えて、どうなるかを確認しました。私はいくつかのコンパイルエラーを持っています。コードには:: ostreamがあり、それをstd :: ostreamに変更するとその問題は解決しました。次に、オーバーロードされた< <演算子の問題が発生しました。その中のすべてのビットがstd :: iostreamを使用していますが、< <コマンドが代わりにostream(またはbasic_ostream)を使用しようとしているようです。
私には何が欠けていますか?古いioクラスをインポートしているヘッダファイルをいくつか変更しなければならないと思います。私はあなたがクラスのヘッダーファイル内の関数の本体を実装する場合その場合は知っているがいけない
inline std::ostream& operator<<(std::ostream& os, const PrinterOption& po)
{
os << "(" << po.Installed() << ", " << po.Enabled() << ")";
return os;
}
'PrinterOption'または' PrinterInfo'は別の名前空間にありますか? – Slava
はい、このコードのほとんどは90年代に書かれているので、一般的な名前空間では何も指定されていません。 –
だから、このコードの問題は何ですか?あなたはどんな結果を期待していますか、何を観察していますか?その2つの違いは何ですか?あなたは、コンパイラエラー、予期しない出力、何か他のものを取得しますか? –