我正在尝试这样做,所以我有一个对象,它有一个指针,所以多个类可以使用同一个对象。但它唯一给我的是1而不是我需要的十六进制地址。 我的代码:
创建它的代码:
SDL_Event event;
EventHandler eh(&event);
使用它的代码:
EventHandler::EventHandler(SDL_Event* eventpointer)
{
EventHandler::event = eventpointer;
//This code is to test the pointer:
std::cout << &EventHandler::event << std::endl;
}
输出:
1
Process returned 0 (0x0) execution time : 0.092 s
答案 0 :(得分:3)
尝试打印事件的值,而不是其地址:
std::cout << EventHandler::event << std::endl;
您的测试用例实际上有几个不寻常的事情。纠正所有这些,我最终得到了这个:
EventHandler::EventHandler(SDL_Event* eventpointer) : event(eventpointer)
{
//This code is to test the pointer:
std::cout << event << "\n";
}
我改变的是:
event
变量的值而不是其地址。 event
的值与eventpointer
的值相同,后者与原始SDL_Event
对象的地址相同。<小时/> 除了:我将在旁边回答实际问题,因为事实证明这与作者的真实意图无关。他看到
1
而不是指针值的实际原因是:他正在尝试打印指向成员的指针的值。 operator<<
没有带指针到成员的重载,因此它将其转换为bool
。他的表达式为非null,因此转换结果为true
,打印为1.