2012-04-03 82 views
0

我試圖讓它有一個對象,它有一個指針,所以多個類可以使用同一個對象。但它給我的唯一東西是1而不是我需要的十六進制地址。 我的代碼:指針地址給出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 

回答

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。他的表達式爲非零,因此轉換結果爲 true,它被打印爲1.

+0

謝謝! (我還在學習C++) – user1311122 2012-04-03 18:26:31

相關問題