2010-08-17 94 views
0

行,所以我孃家幫助,這constructuresC++結構和constructures

 
struct balls { 
     balls() 
     { 
       SetTimer(hWnd, balls.BALL_ID, 1, null); 
     } 
    int Ex; 
    int Ey; 
    UINT_PTR BALL_ID; 
}; 

以及當我設置具有balls.BALL_ID麻煩定時器IM。編譯器認爲球是像球一樣的結構。以及我希望球有結構的價值。像這樣

 
     balls() 
     { 
       SetTimer(hWnd, balls.BALL_ID, 1, null); 
     } 
    int Ex; 
    int Ey; 
    UINT_PTR BALL_ID; 
}; 
balls something; 

現在它使用something.BALL_ID而不是balls.BALL_ID創建結構。 在球()中,它將它改變球()到某物()。 任何想法如何將balls.BALL_ID更改爲stuctureName.BALL_ID?

+0

這些被稱爲「構造」不是「constructures」。 – adf88 2010-08-17 07:02:47

回答

1

BALL_IDballs結構的成員,所以當你想在成員函數中使用它時,你不需要用實例的名稱作爲它的前綴。 所以只是初始化BALL_ID然後使用它:

struct balls { 
     balls(UINT_PTR id) : BALL_ID(id), Ex(0), Ey(0) 
     { 
       SetTimer(hWnd, BALL_ID, 1, NULL); 
     } 
    int Ex; 
    int Ey; 
    UINT_PTR BALL_ID; 
}; 

balls something(IDT_TIMER1); 
+0

請注意,hWnd也必須可以訪問。 – 2010-08-17 08:36:53

+0

@Anthony:完全正確,我稍微假設hWnd是一個全局變量......(並且我意識到我寫了'null'而不是'NULL')。 – 2010-08-17 08:41:52

0

balls.BALL_ID requries'ball'to be object expression。這裏'球'是一個類。所以代碼是不合格的。

$ 5.2.5/2 states-「對於第一個選項(點),第一個表達式(對象表達式)的類型應該是」類對象「(完整類型)。」

所以,您的通話可能是

SetTimer(hWnd, BALL_ID, 1, null); 

此外,請在使用前初始化構造函數中的所有類成員。