错误:从'int(*)[6]'到'int'[-fpermissive] |的无效转换

时间:2015-03-21 20:01:11

标签: c++ arrays function pointers

我创建了一个函数,它返回数组中所有数字的总和,但是我不断收到错误消息:错误:来自' int(*)[6]'到' int' [-fpermissive]。另外我还得到一个错误:错误:初始化' int getTotal(int)' [ - fpermissive]的参数1。似乎这两个错误在一起。我应该使用指针吗?我花了好几个小时试图解决这个问题而没有运气。

    #include <iostream>
    #include <iomanip>
    #include <fstream>
    #include <string>
    #include <cstdlib>

    using namespace std;

    const int ROWS = 4;
    const int COLS = 6;

    void openInputFile(ifstream &,string);
    int getTotal(int);

    using namespace std;

    int main()
    {
        int tot; //total of all numbers
        int val;
        int twoArray[ROWS][COLS];
        ifstream inFile;
        string inFileName = "nums.txt";

        //Opening file
        openInputFile(inFile, inFileName);

        //Create 2D array
        for(int i=0; i<ROWS; i++)
        {
            for(int j=0; j<COLS; j++)
            {
                inFile >> twoArray[i][j];
            }
        }

        //Close
        inFile.close();

        //THIS IS WHERE ERROR IS
        tot = getTotal(twoArray);

        printArray(twoArray);


        return 0;
    }

    void openInputFile(ifstream &inFile, string theFile)
    {
        inFile.open(theFile.c_str());

        if(!inFile)
        {
            cout << "Error opening the file!\n";
            exit(13);
        }
     }

    int getTotal(int array[][COLS])
    {
        int sum = 0;

        for(int i=0; i<ROWS; i++)
        {
            for(int j=0; j<COLS; j++)
            {
                sum+=array[i][j];
            }
        }

        return sum;
    }


    int printArray(int array[][COLS])
    {
            for(int i=0; i<ROWS; i++)
        {
            for(int j=0; j<COLS; j++)
            {
                cout << array[i][j] << " ";
            }
            cout << endl;
        }

        return 0;

    }

1 个答案:

答案 0 :(得分:1)

问题在于错误的函数声明。你有代码的开头:

  int getTotal(int);

然后将函数定义为:

  int getTotal(int array[][COLS])

所以,编辑你的函数声明。顺便说一下,我看不到声明:

  int printArray(int array[][COLS]);