我在打印结构对象数组时遇到问题。
代码如下:
#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效果很好。