无法初始化类型' int *'的参数rvalue类型' int(*)[20]'

时间:2016-10-27 05:25:27

标签: c++

Main.cpp的

#include "SelectionSort.h"

using namespace std;


int main() {

    SelectionSort<int> sorterInt;

    int test_array[20];
    sorterInt.stuffNum(&test_array, 20, 1, 200);
}

SelectionSort.h

using namespace std;

template <typename T>
class SelectionSort {
public:
    void stuffNum(T *object, int size, int min, int max)
    {
        for(int i = 0; i < size; i++)
        {


            (*object)[i] = 5;


        }
    }

1 个答案:

答案 0 :(得分:2)

SelectionSort<int> sorterInt;

int test_array[20];
sorterInt.stuffNum(&test_array, 20, 1, 200);

您的模板的类型为int,因此您的方法采用int *作为参数。 并且您编写&amp; test_array ,其类型为 int * [20] ,因为您发送了数组的地址

所以只需删除&amp;

即可
sorterInt.stuffNum(test_array, 20, 1, 200);

你需要更好地理解指针。

编辑:(阅读评论)

(*object)[i] = 5;

这里你应该像这样删除*和()

object[i] = 5;

此处更多文档What is array decaying?