Array to Array--在C ++中将'int *'赋值为'int error'时出现不兼容的类型

时间:2014-12-11 17:38:34

标签: c++ arrays

你好我想将返回数组从方法分配到数组。我的代码在这里。如何将数组分配到这样的数组?

方法更改代码:

int* change (int array[], int index1, int index2) {

    int temp;

    temp = array[index1];
    array[index1] = array[index2];
    array[index2] = temp;

iter++;

    return array;
}

方法在这里结合代码:

static void combine(int mat[], int len) {

    if(ok)
    return;

    int array[len];
    *array = *mat;


    if (len <= sat * sut) {

        for (int i = len; i < sat * sut - 1; i++) {

            for (int j = i; j < sat * sut; j++) {

             // this is error row
             combine(array, len + 1);

           array = change(array, i, j);

                if (isAcceptable(array) == "ACCEPTABLE") {

                    int accepted[sat*sut];
                    *accepted = *array;
                    ok = true;
                    return;
                }



            }
        }
    } else
        return;
 }

错误行在这里:

array = change(array, i, j);

错误:[错误]分配&#39; int *&#39;中的不兼容类型to&#39; int [(((sizetype)(((ssizetype)len)+ -1))+ 1)]&#39;

我该如何解决?

1 个答案:

答案 0 :(得分:1)

array = change(array, i, j);

正如错误消息所示,您正在尝试分配指向数组的指针,这没有任何意义。没有必要;只需调用函数来更改数组:

change(array, i, j);

并将函数更改为返回void - 简单地传回其中一个参数是没有意义的,因为调用者已经知道它是什么。或者根本不打算写一个函数:

std::swap(array[i], array[j]);

此外,这看起来有点狡猾:

*array = *mat;

也许您认为这会将整个数组复制到array;它没有,它只复制第一个元素。要复制数组,请执行

std::copy(mat, mat+len, array);

或者更好的是,使用标准容器而不是非标准可变长度数组:

std::vector<int> array(mat, mat+len);