鉴于:
MY_CLASS* ptr = MY_CLASS::GetSomeInstance();
输出ptr
到的正确方法是什么std::cerr
,所以我可以记录它的值?注意我不想写课程,只是地址。
operator<<
被重载为 a const void*
,因此您可以简单地将指针插入流中:
std::cerr << ptr;
例外是如果指针是 a const char*
,它将被解释为指向 C 字符串的指针。要打印指针,您需要将其显式转换为const void*
:
std::cerr << static_cast<const void*>(ptr);
您可以利用boost 格式进行 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);