似乎无法将对象正确添加到C++; 我主要是用java编程,但是我正在学习一个图形课程,我需要使用C++。我试图创建一个对象数组,以便循环通过它们并将它们绘制到屏幕上,但我一辈子都不知道如何创建这个数组。我现在的代码不会产生任何编译器错误,但它似乎也不能正常工作。以下代码位于my Main.cpp类的顶部: Platform ground("wallstone.tga", 40, 16, 4, 144); Platform platform1("wallstone.tga", 10, 16, 4, 20); Platform platforms[2] = {ground, platform1}
当我尝试时:似乎无法将对象正确添加到C++; 我主要是用java编程,但是我正在学习一个图形课程,我需要使用C++。我试图创建一个对象数组,以便循环通过它们并将它们绘制到屏幕上,但我一辈子都不知道如何创建这个数组。我现在的代码不会产生任何编译器错误,但它似乎也不能正常工作。以下代码位于my Main.cpp类的顶部: Platform ground("wallstone.tga", 40, 16, 4, 144); Platform platform1("wallstone.tga", 10, 16, 4, 20); Platform platforms[2] = {ground, platform1},c++,arrays,oop,graphics,C++,Arrays,Oop,Graphics,当我尝试时:fprintf(标准输出,“平台数组的大小:%d”,sizeof(平台)/sizeof(平台))它打印出0.0 我尝试过几种创建此数组的方法,但它们似乎都会产生错误或相同的0.0输出,所以我不确定发生了什么。如果我的任何代码是必要的,我一定愿意张贴它。当然,如果有更好的方法,我会很感激。谢谢 看起来你做的每件事都是对的。我唯一的猜测是您平台上的size\u t大于int,因此提供正确的格式说明符(%z而不是%d)可以解决问题: fprintf(stdout, "Size of pla
fprintf(标准输出,“平台数组的大小:%d”,sizeof(平台)/sizeof(平台))代码>它打印出0.0
我尝试过几种创建此数组的方法,但它们似乎都会产生错误或相同的0.0输出,所以我不确定发生了什么。如果我的任何代码是必要的,我一定愿意张贴它。当然,如果有更好的方法,我会很感激。谢谢 看起来你做的每件事都是对的。我唯一的猜测是您平台上的size\u t
大于int
,因此提供正确的格式说明符(%z
而不是%d
)可以解决问题:
fprintf(stdout, "Size of platforms array: %z", sizeof(platforms)/sizeof(Platform));
我很好奇%d
格式说明符如何导致0.0
…旁注:为什么是fprintf?您可以使用PrimTf。此外,<代码> SIEZYTT < /C> >的格式指定器是“代码> %UZ < /代码>,无论如何C++中您应该使用<代码> STD::CUT< /COD>而不是<代码> Prtff()/Case>。我从内存中输入代码并犯了一些错误,意思是%F。而fprintf正是我所知道的,哈哈。如果你还没有嫁给数组,你可能会发现STL中的集合类,比如vector,更容易处理。或者,将表达式转换为int:(int)(sizeof(platforms)/sizeof(platforms[0])
这正是问题所在,非常感谢!我在数组中循环的函数仍然不起作用(我希望大小问题是问题所在),但我会继续努力。谢谢。@H2CO3你说得对,size\u t
的格式是z
。我不知道size\u t
现在有自己的格式:)谢谢!