似乎无法将对象正确添加到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
现在有自己的格式:)谢谢!