多くの std::cout ステートメントを配置して、このクラスが処理している大量のシグナルに関する有益なテキスト メッセージを出力する C++ クラスがあります。私の意図は、これらのテキスト メッセージを log という名前の関数にリダイレクトすることです。この関数には、ログ テキストを出力するかどうかを定義する mVerbose という名前のフラグがあります。この関数の内容は次のとおりです。
void XXXProxy::log(std::stringstream& ss)
{
if(mVerbose)
{
std::cout << ss;
ss << "";
}
}
次に、この関数の呼び出し元コード スニペットは次のようになります。 std::stringstream logStr;
logStr << "SE"
<< getAddr().toString()
<< ": WAITING on epoll..."
<< std::endl;
log(logStr);
std::stringstream オブジェクトを作成してログ関数を呼び出す必要がないように、XXXProxy で << 演算子をオーバーロードしたいと考えています。以下のようにテキスト メッセージをログに記録し、 << 演算子ですべてを次のように集約できるようにしたいと考えています。
<< "SE"
<< getAddr().toString()
<< ": WAITING on epoll..."
<< std::endl;
したがって、次のようなメンバー << 関数が必要です。
void XXXProxy::operator << (std::stringstream& ss)
{
if(mVerbose)
{
std::cout << ss;
ss << "";
}
}
質問
私は比較的初心者の C++ 開発者であり、上記のような << 演算子を記述しようとすると、多くのコンパイル エラーが発生します。この << 演算子を正しく実装するために、いくつかの提案をするか、いくつかのリンクに誘導してください。ありがとう。