【发布时间】: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