次のように、特定のファイル cfileop.cpp で ofstream 演算子をオーバーロードしました。
std::ostream& operator<<(std::ostream& ofs, LPCWSTR wideString)
{
//ofs << ConvertUnicodeToUtf8(wideString).GetBuffer();
ofs << CW2A(wideString,CP_UTF8);
return ofs;
}
この特定のファイルでは、オペレーターを使用して行われる呼び出しはすべて完璧に機能します。まったく問題ありません。
ただし、この同じ演算子を別のファイルにオーバーロードする必要があります。この呼び出しを別の場所 acrazyapp.cpp で繰り返すと、次のような出力が得られます。
02962AE010021A3402961018
029621C010021A3410022AF0
029621C010021A34029619D0
029621C010021A3410022A68
これは、オーバーロードの場所を acrazyapp.cpp に切り替えるだけで解決できると思いました。ただし、これにより cfileop.cpp が正しく出力されませんでした。両方を満たすために、呼び出しをヘッダー ファイル ch_ofstream.h に移動し、両方の cpp ファイルに含めました。ただし、この場合、次のエラーを受け取りました: 致命的なエラー LNK1169: 1 つ以上の複数定義されたシンボルが見つかりました。
cpp ファイルを結合せずに、上記の ofstream 演算子が両方の cpp ファイルで適切にオーバーロードされていることを確認するにはどうすればよいですか?
ありがとうございました!