私のC++アプリケーションのリファクタリングが進行中です。 +さらに停止、彼らは起動時に特定のアクション(すなわちの「自動」のログを取得するためにC++でのカスタムログインの方法
Log(std::string _init_message):
init_message(_init_message)
{ PrintLogLine(init_message + " ...");}
~Log()
{ PrintLogLine(init_message + " done.");}
:私は
LOG("something interesting") // 1
LOG("something ended") // 2
LOG("foo: " << bar) // 3
のようなマクロを使用する前に、私の考えは、今ではのようなLog
クラスを記述することでしたタイミングなど)。
void ActionXYZ() {
Log log("xyz");
// do stuff
}
私が苦労しているのは、ケース3)で動作させる方法を定義することです。 Javaでは、コンパイラが自動的に文字列の作成を行うので、1つのString
引数を取るメソッドを使用できます。私はC++でどのような可能性を持っていますか?
いずれかのオプションのように使用できるように機能させることはできますか?
// in "do stuff"
log("foo:" + bar); // OR
log << "foo:" << bar;
またはBoost.Format。 –
私は既に最初のオプションを試しましたが、その適用性は限られています。この 'log(std :: string(" foo: ")+ 2 +" units ");'はコンパイルされません... – dcn
@dcn、あなたは元の質問でそれを言及しておきました。 –