与えられた:
MY_CLASS* ptr = MY_CLASS::GetSomeInstance();
ptr
に出力する正しい方法は何std::cerr
ですか?その値をログに記録できますか?クラスを書きたくはなく、アドレスだけを書きたいことに注意してください。
operator<<
はオーバーロードされてを取得するconst void*
ため、ポインタをストリームに挿入するだけです。
std::cerr << ptr;
例外は、ポインタが。の場合const char*
、C文字列へのポインタとして解釈されることです。const void*
ポインタを出力するには、ポインタを明示的に:にキャストする必要があります。
std::cerr << static_cast<const void*>(ptr);
書式設定のようなprintfのブースト書式を活用できます。
std::cerr << format("%p", ptr) << endl;
%p
フォーマットポインタ-x86とx64の間で移植可能である必要があります。
作品を使用している間operator<<
、あなたはまた使用することができます<cstdio>
:
#include <cstdio>
...
MY_CLASS* ptr = MY_CLASS::GetSomeInstance();
fprintf(std::stderr, "Pointer address: %p", ptr);