Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/139.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 结构和scruct数组_C++_Arrays_Struct - Fatal编程技术网

C++ 结构和scruct数组

C++ 结构和scruct数组,c++,arrays,struct,C++,Arrays,Struct,嗨!我这里的代码有问题。当我尝试访问我拥有的这个scruct数组时,它不允许我访问实际的数组空间I,而是反复给我相同的数组值,直到它完成为止。你们有人看到错误吗?这是一个相对较短的代码,除了我的代码之外,函数的名称是正确的,不用担心。但是,每当我尝试使用draw_框时,它只会给我框[]的位置0,即数组框[]中的第一个;再也没有了,也就没有我想要的了。请记住,我是一个IT学生在他的第一个学期,没有以前的经验,在编程中的C++。对你来说很明显的事情对我来说就不那么明显了 #include <i

嗨!我这里的代码有问题。当我尝试访问我拥有的这个scruct数组时,它不允许我访问实际的数组空间I,而是反复给我相同的数组值,直到它完成为止。你们有人看到错误吗?这是一个相对较短的代码,除了我的代码之外,函数的名称是正确的,不用担心。但是,每当我尝试使用draw_框时,它只会给我框[]的位置0,即数组框[]中的第一个;再也没有了,也就没有我想要的了。请记住,我是一个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;
}
#包括
#定义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,宽度,高度,颜色)。是的,没错。否则,他的代码将按预期通过数组的所有项。非常感谢!我想我只是理解错了函数,因为我们得到的头文件根本没有文档!这个修好了!很高兴听到。然后你可以验证答案。祝你好运