ヘッダーファイルに次のコードがあります。ヘッダーファイルにグローバル関数定義があり、重複するシンボルリンケージエラーを避ける
#pragma once
class error_code {
public:
unsigned __int64 hi;
unsigned __int64 lo;
};
std::ostream& operator<< (std::ostream& o, const error_code& e) {
return o << "[" << e.hi << "," << e.lo << "]";
}
プロジェクトに2つのcppがある場合、このヘッダーファイルが含まれています。
エラーLNK2005: "クラスERROR_CODE __cdecl演算子|(クラスERROR_CODEのconst &、クラスViTrox :: ERROR_CODEのconst &)"(??? U @@ YA AVerror_code @ 0 @ ABV10 Z @ 0 @) は、すでに私はcppのファイルに、またはDLLファイルに
operator<<
の定義を移動した場合、私は、この問題を解決することができます知っているxxx.obj
で定義されています。
しかし、私はちょうどSINGLEヘッダーファイルにそれらを持っていたいと思います。それを達成するための技術はありますか?あるいは、定義を別のファイルに分ける必要がありますか?
エラーメッセージがコードスニペットと一致しません。 –