2

ここで次の問題が発生します。ロガーを作成(リファクタリング)し、C ++の実行時型識別メカニズムを使用しようとしています。具体的typeidには、ロガーを呼び出したばかりのクラスの実行時型情報を取得します。これは、次のようなマクロに入ります。

#define debug() Streamer(__FILE__, __FUNCTION__, typeid(this).name(), LOG_DEBUG)

ここで、Streamerは、operator <<などの必要なストリーミング機能を取得するためにをオーバーロードするクラスdebug() << "message " << 16;です。

唯一の問題はdebug()、静的関数からマクロを呼び出すときです。なぜなら、typeid(this)はおかしくなり、静的メソッドにはがないことを非常に正確に不平を言うからthisです。

ログに記録しようとする静的メソッドを含む文字列としてクラスを取得することについて、あなたの意見とおそらくいくつかのコードスニペットを聞きたいと思います。

乾杯、f。

4

0 に答える 0