无法将'int (*)[size]'转换为'int**'

Cannot convert 'int (*)[size]' to 'int**'

本文关键字:int size 转换      更新时间:2023-10-16

我有一个256x256的二维浮点数组,我正试图将其传递到函数中,g++会给我错误消息:Cannot convert 'int (*)[256]' to 'int**'。我该如何解决此问题?

void haar2D(int** imgArr);
int imageArray[256][256];
haar2D(imageArray);

我尝试将函数参数更改为类型int[256][256]int*[256],但没有成功。

函数参数必须按照编译器的指示进行声明。

所以要么像一样申报

void haar2D( int imgArr[256][256] );

void haar2D( int imgArr[][256] );

或类似

void haar2D( int ( *imgArr )[256] );

考虑到像数组一样声明的参数会被调整为指向其元素的指针。

或者您可以将参数声明为对数组的引用

void haar2D( int ( & imgArr )[256][256] );

如果您不想更改函数。

void haar2D(int** imgArr);

您可以尝试更改imageArray。

int **imageArray=new int*[256];
for (int i = 0; i < 256; ++i)
{
    imageArray[i] = new int[256];
}

然后

haar2D(imageArray);
相关文章: