2013-03-09 68 views
2

我主要使用Java編程,但我正在爲需要使用C++的圖形課程進行編程。我正在嘗試創建一個對象數組,以便循環遍歷它們並將它們繪製到屏幕上,但是我無法想象如何創建此數組。我現在有代碼不會產生任何編譯錯誤,但它似乎也不能正常工作。下面的代碼是在我的Main.cpp的類的頂部:似乎無法正確地將對象添加到C++中的數組中

Platform ground("wallstone.tga", 40, 16, 4, 144); 
Platform platform1("wallstone.tga", 10, 16, 4, 20); 
Platform platforms[2] = {ground, platform1} 

當我嘗試:fprintf(stdout, "Size of platforms array: %d", sizeof(platforms)/sizeof(Platform));它打印出0.0。

我試過幾種創建這個數組的方法,它們都似乎產生錯誤或0.0的輸出,所以我不知道發生了什麼。如果我的代碼更多,我肯定會願意發佈它。當然,如果有更好的方法來解決這個問題,我很感激。謝謝!

+3

我很好奇的'%D'格式說明如何產生在'0.0' ... – 2013-03-09 18:58:52

+1

附註:爲什麼fprintf?你可以使用printf。 – Synxis 2013-03-09 18:58:56

+0

另外,'size_t'的正確格式說明符是'%uz',無論如何在C++中,您應該使用'std :: cout'而不是'printf()'。 – 2013-03-09 18:59:40

回答

3

看起來你正在做的一切都是正確的。我唯一的猜測是,size_t你的平臺上比int大,因此提供了一個正確的格式說明(%z而不是%d)可以解決這個問題:

fprintf(stdout, "Size of platforms array: %z", sizeof(platforms)/sizeof(Platform)); 
+0

交替地將表達式轉換爲int:'(int)(sizeof(platforms)/ sizeof(platforms [0]))' – sfstewman 2013-03-09 19:03:28

+1

'size_t''%uz'不是正確的格式說明符嗎? – 2013-03-09 19:03:34

+0

這正是問題所在,非常感謝!我的循環數組的功能仍然不起作用(我希望尺寸問題是問題),但我會繼續努力。我很感激。 – user2152198 2013-03-09 19:04:12

相關問題