【问题标题】:Cannot convert 'int (*)[size]' to 'int**'无法将“int (*)[size]”转换为“int**”
【发布时间】:2016-03-15 06:56:58
【问题描述】:

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

void haar2D(int** imgArr);

int imageArray[256][256];
haar2D(imageArray);

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

【问题讨论】:

  • 你试过把函数参数类型改成std::vector<std::vector<int>> &imgArr吗?
  • 我以前没有使用过向量,如果可能的话,我想使用二维数组。我也已经使用行列(例如imagearray[i][j])表示法编写了函数体,这可以与向量一起使用吗?
  • 您可以参考this,它是C,您可以使用引用代替,也可能使用模板来获取数组大小。祝下次搜索好运。
  • 到白板上写100遍“数组不是指针”。

标签: c++ multidimensional-array parameters compiler-errors implicit-conversion


【解决方案1】:

函数参数必须像编译器所说的那样声明。

所以像这样声明它

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

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

或喜欢

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

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

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

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

【讨论】:

    【解决方案2】:

    如果您不想更改功能。

    void haar2D(int** imgArr);
    

    您可以尝试更改 imageArray。

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

    然后

    haar2D(imageArray);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-01-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-14
      • 2020-04-23
      • 1970-01-01
      相关资源
      最近更新 更多