2

鉴于:

MY_CLASS* ptr = MY_CLASS::GetSomeInstance();

输出ptr到的正确方法是什么std::cerr,所以我可以记录它的值?注意我不想写课程,只是地址。

4

3 回答 3

8

operator<<被重载为 a const void*,因此您可以简单地将指针插入流中:

std::cerr << ptr;

例外是如果指针是 a const char*,它将被解释为指向 C 字符串的指针。要打印指针,您需要将其显式转换为const void*

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

您可以利用boost 格式进行 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 回答