假设:
MY_CLASS* ptr = MY_CLASS::GetSomeInstance();
将ptr
输出到std::cerr
的正确方法是什么,所以我可以记录它的值?注意我不想写类,只是地址。
答案 0 :(得分:8)
operator<<
被重载以获取const void*
,因此您只需将指针插入流中即可:
std::cerr << ptr;
例外情况是,如果指针是const char*
,它将被解释为指向C字符串的指针。要打印指针,您需要将其明确强制转换为const void*
:
std::cerr << static_cast<const void*>(ptr);
答案 1 :(得分:1)
答案 2 :(得分:1)
使用operator<<
时,您也可以使用<cstdio>
:
#include <cstdio>
...
MY_CLASS* ptr = MY_CLASS::GetSomeInstance();
fprintf(std::stderr, "Pointer address: %p", ptr);