2013-03-09 25 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

相关问题