【发布时间】:2017-12-11 15:24:35
【问题描述】:
嗨!我的代码有问题。当我尝试访问我拥有的这个 scruct 数组时,它不会让我访问实际的数组空间 i,而是它会一遍又一遍地给我相同的数组值,直到它完成。你们中有人看到错误吗?这是一个相对较短的内容,除了我的代码之外,函数的名称是正确的,不用担心。但是,每当我尝试使用 draw_boxes 时,它只会给我 box[] 的位置 0,即数组 boxes[] 中的第一个;没有更多,因此没有给出我想要的东西。请记住,我在他的第一学期是一名 IT 学生,之前没有 C++ 编程经验。对你来说可能很明显的事情对我来说不会那么明显。
#include <iostream>
#define CIMGGIP_MAIN
#include "CImgGIP05.h"
using namespace std;
struct Box
{
int x;
int y;
int delta_y;
};
const int box_max = 10, box_size = 40;
void draw_boxes(Box boxes[])
{
white_background();
for (int i = 0; i < box_max; i++)
{
gip_draw_rectangle(boxes[i].x, boxes[i].y, box_size, box_size,
blue);
/* don't mind this, it's something we had in our given header file.
This line is correct*/
}
}
int main() {
Box boxes[box_max] = { 0 };
for (int i = 0; i < box_max; i++)
{
boxes[i].x = i * (box_size + 20) + 10;
boxes[i].y = 0;
boxes[i].delta_y = random(10, 30);
}
draw_boxes(boxes);
return 0;
}
当我使用函数 draw_boxes() 时,我希望它循环遍历我的 box[] 数组,而不仅仅是使用一个。
我得到的结果是语法错误。它只会使用一个空格[],即使我给它其他空格的索引,所以它只适用于一组值。
提前感谢您的帮助!
【问题讨论】:
-
你得到什么语法错误?在询问有关错误的问题时,请务必分享您遇到的确切错误。
-
如果你使用
std::vector而不是数组,你的生活会更轻松。 -
很遗憾,我现在必须使用向量。我们的教授暂时不会让我们使用其他任何东西
-
@KidKAt 那你发的程序是语法错误,还是只能画一个框的问题?
-
@KidKAt 如果您依靠调试器查看
boxes在void draw_boxes(Box boxes[])中包含的内容,它可能只会向您显示第一个元素。调试器可能依赖boxes的类型来确定如何向您显示它,并且无法从它的类型中推断出boxes包含的元素数量。请打印出来以控制正在绘制的框的位置。