【问题标题】:error: invalid conversion from 'int (*)[6]' to 'int' [-fpermissive]|错误:从“int (*)[6]”到“int”的无效转换 [-fpermissive]|
【发布时间】:2015-03-21 20:01:10
【问题描述】:

我创建了一个返回数组中所有数字之和的函数,但是我不断收到错误消息:错误:从 '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;

    }

【问题讨论】:

  • 将顶部的int getTotal(int); 调整为int getTotal(int **); 或类似的东西
  • @jhnnslschnr, int**int(*)[6] 完全不同。
  • 这已经(显然)使用int arr[][COLS] 参数为printArray(缺少函数原型,顺便说一句)正确完成。那么.. 用getTotal 做同样的事情有什么问题?
  • @WhozCraig 不敢相信我什至没有注意到这是多么愚蠢的错误。非常感谢!

标签: c++ arrays function pointers


【解决方案1】:

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

  int getTotal(int);

然后定义函数为:

  int getTotal(int array[][COLS])

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多