C ++打印结构对象数组

时间:2019-01-18 14:19:29

标签: c++ arrays

我在打印结构对象数组时遇到问题。

代码如下:

#include <iostream>
#include <string>

#define LOG(x) std::cout << x
#define ARR_SIZE(arr) sizeof(arr)/sizeof(arr[0])

struct vec2
{
    int x, y;
};

struct Painting : vec2
{
    std::string s_author, s_title, s_genre;
};

void disp_Array(Painting arr[])
{
    for (int i = 0; i < ARR_SIZE(arr); i++)
    {
        LOG(arr[i].s_author << "\n");
        LOG(arr[i].s_title << "\n");
        LOG(arr[i].s_genre << "\n");
        LOG(arr[i].x << "\n");
        LOG(arr[i].y << "\n");
    }
}

int main()
{
    Painting painting[4];

    disp_Array(painting);

    for (int i = 0, j = 1; i < ARR_SIZE(painting), j <= ARR_SIZE(painting); i++, j++)
    {
        LOG("Painting " << j << "\n");
        LOG("Author: ");
        std::cin.ignore();
        std::getline(std::cin, painting[i].s_author);

        LOG("Title: ");
        std::getline(std::cin, painting[i].s_title);

        LOG("Genre: ");
        std::getline(std::cin, painting[i].s_genre);

        LOG("Width: ");
        std::cin >> painting[i].x;

        LOG("Height: ");
        std::cin >> painting[i].y;

        LOG("\n");
    }

    disp_Array(painting);

    std::cin.get();
    return 0;
}

问题出在disp_Array函数内。想法是该函数应从数组中的对象输出变量。但不幸的是,它不起作用,实际上,它不输出任何东西。

因此,我尝试通过仅显示数组的大小来替换函数的主体来对其进行测试,但是它打印的是0而不是4(该数组中元素的数量)。

这是否意味着问题出在函数的参数之内以及如何传递它们?因为单独使用ARRAY_SIZE效果很好。

0 个答案:

没有答案