C++ 结构和scruct数组
嗨!我这里的代码有问题。当我尝试访问我拥有的这个scruct数组时,它不允许我访问实际的数组空间I,而是反复给我相同的数组值,直到它完成为止。你们有人看到错误吗?这是一个相对较短的代码,除了我的代码之外,函数的名称是正确的,不用担心。但是,每当我尝试使用draw_框时,它只会给我框[]的位置0,即数组框[]中的第一个;再也没有了,也就没有我想要的了。请记住,我是一个IT学生在他的第一个学期,没有以前的经验,在编程中的C++。对你来说很明显的事情对我来说就不那么明显了C++ 结构和scruct数组,c++,arrays,struct,C++,Arrays,Struct,嗨!我这里的代码有问题。当我尝试访问我拥有的这个scruct数组时,它不允许我访问实际的数组空间I,而是反复给我相同的数组值,直到它完成为止。你们有人看到错误吗?这是一个相对较短的代码,除了我的代码之外,函数的名称是正确的,不用担心。但是,每当我尝试使用draw_框时,它只会给我框[]的位置0,即数组框[]中的第一个;再也没有了,也就没有我想要的了。请记住,我是一个IT学生在他的第一个学期,没有以前的经验,在编程中的C++。对你来说很明显的事情对我来说就不那么明显了 #include <i
#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;
}
#包括
#定义CIMGGIP_MAIN
#包括“CImgGIP05.h”
使用名称空间std;
结构盒
{
int x;
int-y;
int delta_y;
};
const int box_max=10,box_size=40;
无效绘制框(框框[])
{
白色背景();
对于(int i=0;i
当我使用函数draw_box()时,我希望它在我的框数组[]中循环,而不仅仅是使用一个
我得到的结果是语法错误。它将只使用一个空格框[],即使我给它其他空格的索引,所以它只使用一组值
提前谢谢你的帮助 您的代码是正确的,但您的逻辑可能是错误的 您的函数gip_draw_矩形可能是:
gip_draw_rectangle(x1,y1,x2,y2,color);
您想要的x2=x1+宽度;y2=y1+高度代码>
你的盒子只是重叠。最后一个被画满了
尝试:
gip_draw_rectangle(boxes[i].x, boxes[i].y, boxes[i].x + box_size, boxes[i].y + box_size, blue);
你得到了什么语法错误?当问一个关于错误的问题时,分享你得到的确切错误是很重要的。如果你使用std::vector
而不是数组,你的生活会更轻松。遗憾的是,我现在不得不使用vector。我们的教授不会让我们在会议上使用其他任何东西moment@KidKAt那么,您发布的程序是否存在语法错误,或者它是否存在只绘制一个框的问题?@KidKAt如果您依靠调试器查看box
中包含的void draw\u box(box-box[])
可能只会显示第一个元素。调试器可能依赖于box
的类型来确定如何向您显示它,并且无法从其类型推断box
包含的元素数。请打印出来以控制正在绘制的框的位置。您假设它不是gip_draw_矩形(x,y,宽度,高度,颜色)代码>。是的,没错。否则,他的代码将按预期通过数组的所有项。非常感谢!我想我只是理解错了函数,因为我们得到的头文件根本没有文档!这个修好了!很高兴听到。然后你可以验证答案。祝你好运