Попробуйте напечатать значение события, а не его адрес:
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
.Его выражение ненулевое, поэтому в результате преобразования получается true
, который печатается как 1.