【问题标题】:Structs and scruct arrays结构体和结构体数组
【发布时间】: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 如果您依靠调试器查看boxesvoid draw_boxes(Box boxes[]) 中包含的内容,它可能只会向您显示第一个元素。调试器可能依赖boxes 的类型来确定如何向您显示它,并且无法从它的类型中推断出boxes 包含的元素数量。请打印出来以控制正在绘制的框的位置。

标签: c++ arrays struct


【解决方案1】:

你的代码没问题,但你的逻辑很可能是错误的。

你的函数 gip_draw_rectangle 很可能:

gip_draw_rectangle(x1,y1,x2,y2,color);

你想要的地方x2 = x1 + width; and y2 = y1 + height; 你的盒子只是重叠。最后一个是全部绘制的。

尝试:

gip_draw_rectangle(boxes[i].x, boxes[i].y, boxes[i].x + box_size, boxes[i].y + box_size, blue);

【讨论】:

  • 你假设它不是gip_draw_rectangle(x, y, width, height, color);
  • 是的,完全正确。否则他的代码会按预期通过数组的所有项目。
  • 非常感谢!我想我只是理解错误的函数,因为我们得到的头文件根本没有记录!这解决了它!
  • 很高兴听到。然后你可以验证答案。祝你好运!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-05
  • 1970-01-01
  • 2016-05-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多