gpt4 book ai didi

c++ - 错误 : invalid types ‘Pixel*[__complex__ int]’ for array subscript

转载 作者:搜寻专家 更新时间:2023-10-31 01:04:35 24 4
gpt4 key购买 nike

我正在编写一个函数,将图像的维度和内存都减半。图像数据在我的图像对象中声明为 Pixel *data。但是,g++ 给我以下错误。我发现错误指向 [2i*2j] 而不是 [i*j] 很奇怪,所以似乎将每个索引乘以 2 就是造成这种差异的原因。

函数:

void HalveInSize(Image &input, Image &output)
{

output = Image(input.GetX()/2, input.GetY()/2, (Pixel*) malloc(input.GetX()/2 * input.GetY()/2 * sizeof(Pixel)));

int i, j;
for (i = 0; i < output.GetX(); i++)
{
for (j=0; j < output.GetY(); j++)
{
output.GetData()[i*j] = input.GetData()[2i*2j];
}
}
}

编译错误:

functions.h: In function ‘void HalveInSize(Image&, Image&)’:
functions.h:65:51: error: invalid types ‘Pixel*[__complex__ int]’ for array subscript
output.GetData()[i*j] = input.GetData()[2i*2j];

最佳答案

2i 是一个复数-4 的正平方根。这与您的变量 i 无关。我认为你的意思是 2*i*2*j (尽管你的循环不是迭代二维数组的正确方法,而且你将访问你 malloc 的边界之外)

我想你是故意的

for (i = 0; i < output.GetX(); i++)
{
for (j=0; j < output.GetY(); j++)
{
output.GetData()[i * output.GetY() + j]
= input.GetData()[2*i*input.GetY() + 2*j];
}
}

关于c++ - 错误 : invalid types ‘Pixel*[__complex__ int]’ for array subscript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23670364/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com