【问题标题】:Cannot seem to properly add objects to an array in C++似乎无法正确地将对象添加到 C++ 中的数组中
【发布时间】:2013-02-25 05:06:31
【问题描述】:

我主要使用 Java 进行编程,但我正在学习需要使用 C++ 的图形课程。我正在尝试创建一个对象数组,以便循环遍历它们并将它们绘制到屏幕上,但我一生都无法弄清楚如何创建这个数组。我现在有代码,它不会产生任何编译器错误,但它似乎也不能正常工作。以下代码位于我的 Main.cpp 类的顶部:

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 输出,所以我不确定发生了什么。如果需要我的更多代码,我当然愿意发布它。当然,如果有更好的方法来解决这个问题,我将不胜感激。谢谢!

【问题讨论】:

  • 我很好奇%d 格式说明符是如何导致0.0...
  • 旁注:为什么选择 fprintf ?您可以使用 printf。
  • 另外,size_t 的正确格式说明符是 %uz,无论如何在 C++ 中你应该使用 std::cout 而不是 printf()
  • 我从内存中输入了代码并犯了一些错误,意思是 %f。 fprintf 只是我认识的一个哈哈。
  • 如果您不熟悉数组,您可能会发现 STL 中的集合类(如 vector)更易于处理。只是说。

标签: c++ arrays oop graphics


【解决方案1】:

看起来你做的一切都是正确的。我唯一的猜测是您平台上的size_t 大于int,因此提供正确的格式说明符(%z 而不是%d)可能会解决问题:

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

【讨论】:

  • 或者,将表达式转换为 int:(int)( sizeof(platforms)/sizeof(platforms[0]) )
  • 这正是问题所在,非常感谢!我的循环遍历数组的函数仍然不起作用(我希望大小问题是问题),但我会继续努力。我很感激。
  • @H2CO3 没错,size_t 的格式是z。我没有意识到size_t 现在有自己的格式:) 谢谢!
猜你喜欢
  • 2018-04-02
  • 2017-05-31
  • 1970-01-01
  • 2021-04-05
  • 2014-05-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多