2

与えられた:

MY_CLASS* ptr = MY_CLASS::GetSomeInstance();

ptrに出力する正しい方法は何std::cerrですか?その値をログに記録できますか?クラスを書きたくはなく、アドレスだけを書きたいことに注意してください。

4

3 に答える 3

8

operator<<はオーバーロードされてを取得するconst void*ため、ポインタをストリームに挿入するだけです。

std::cerr << ptr;

例外は、ポインタが。の場合const char*、C文字列へのポインタとして解釈されることです。const void*ポインタを出力するには、ポインタを明示的に:にキャストする必要があります。

std::cerr << static_cast<const void*>(ptr); 
于 2010-07-14T22:53:19.057 に答える
1

書式設定のようなprintfのブースト書式を活用できます。

std::cerr << format("%p", ptr) << endl;

%pフォーマットポインタ-x86とx64の間で移植可能である必要があります。

于 2010-07-14T22:56:22.433 に答える
1

作品を使用している間operator<<、あなたはまた使用することができます<cstdio>

#include <cstdio>
...
MY_CLASS* ptr = MY_CLASS::GetSomeInstance();
fprintf(std::stderr, "Pointer address: %p", ptr);
于 2010-07-14T22:57:39.850 に答える