4
私はこのようになりますヘッダファイルを持って、私は動的ライブラリにコンパイルしようとしていますC++のオーバーロード出力オペレータ
//Definitions
#include "severity.hpp"
//Namespaces
using namespace std;
using namespace microtask::log;
std::ostream& operator<<(std::ostream& out, const severity& level)
{
switch(level)
{
case debug:
out << "debug";
break;
case info:
out << "info";
break;
case warning:
out << "warning";
break;
case error:
out << "error";
break;
case critical:
out << "critical";
break;
default:
out << "unknown";
break;
}
return out;
}
。残念ながら、このエラーメッセージでリンクできません:
undefined reference to `microtask::log::operator<<(std::basic_ostream<char, std::char_traits<char> >&, microtask::log::severity const&)'
私は間違っていますか?私は同様のように見える他のstackoverflow.comの質問をチェックしたが、私が知る限り、私は正しい演算子のオーバーロードのためのフォーマットがあります。あなたの.cppファイルで
これはうまくいきます。さて、私は同じミスをもう一度しないように、なぜ以前にはうまくいかなかったのですか? (タイムアウトが起きたらすぐに回答を受け入れる)。 –
':microtask :: log :: operator <<'ではなく ':: operator <<'を定義していました。これは単なる別の機能であり、必要なものはまだありません。あなたの孫でさえ感謝する恒久的な解決策は、決して使用しないことです:-) –
ああ、よく分かります。 Idk、それは、私がそのようなクラスメソッドの実装を宣言するために使用されたので、ちょうど私を捨てました。 –