注册 登录
编程论坛 C++教室

为什么运行错误了,各位高手求解

我想学cplaus 发布于 2013-06-11 20:44, 629 次点击
#include"iostream"
using namespace std;
class arr
{
private:
    int str[100][100];
public:
    arr()
    {
     for(int i=0;i<100;i++)
         for(int j=0;j<100;j++)
             str[i][j]=0;
    }
    void getdata(int w[100][100])
    {
     for(int i=0;i<100;i++)
         for(int j=0;j<100;j++)
             str[i][j]=w[i][j];
    }
    friend void add(arr&,arr&,arr&);
};
void add(arr&C,arr&A,arr&B)
{  
    C.str[0][0]=0;
    for(int i=0;i<100;i++)
         for(int j=0;j<100;j++)
         {
          C.str[i][j]=A.str[i][j]+B.str[i][j];
         }
     
}
int main()
{
    int a[100][100],b[100][100],c[100][100];
    arr fi,se,three;
    cout<<"input one numbers:";
    for(int i=0;i<100;i++)
         for(int j=0;j<100;j++)
             cin>>a[i][j];
    cout<<"input two numbers:";
    for(i=0;i<100;i++)
         for(int j=0;j<100;j++)
             cin>>b[i][j];
    fi.getdata(a[100][100]);
    se.getdata(b[100][100]);
    add(three,fi,se);
    return 0;

}
求解这两句为什么错误了,运行是这样的error C2664: 'getdata' : cannot convert parameter 1 from 'int' to 'int [][100]'
        Conversion from integral type to pointer type requires reinterpret_cast, C-style cast or function-style cast

8 回复
#2
p13452340222013-06-11 22:07
你这是想实现什么算法?
#3
lzj125302013-06-12 09:14
你的参数弄错了,你声明的时候是Int w[100][100]是指一个数组w[100]而是用的时候传递的是单个元素a[100][100],所以参数类型不对应,因此出错。
#4
我想学cplaus2013-06-12 18:18
lzj12530 那是不是把void getdata(int w[100][100])函数改一下还是下面的改
#5
lzj125302013-06-12 20:09
两边都要改,对于你要实现的功能来讲这种写法本身就是错误的。你只需要传递数组的首地址就行了,如果你要将整个数组都进行传递,声明时用void getdata(int w[],int size)。不过二维数组是不能这样传递,也就是不能写成getdata(int w[][],int size)!!! 如果要传递就要转换为1维数组

[ 本帖最后由 lzj12530 于 2013-6-12 20:12 编辑 ]
#6
雨中人X2013-06-14 20:39
fi.getdata(a[100][100]);
 se.getdata(b[100][100]);
改成:
fi.getdata(a]);
se.getdata(b);
即可
#7
末明黑夜2013-06-14 21:36
你这个数组没办法结束啊,还是要输入【100】【100】才能结束?
我按楼上的改了,然后运行了一下,没有得到这个程序想要的结果,你试试用指针?
#8
潇翊2013-06-15 00:49
上来一大堆代码,一句注释都没有,也不说要实现什么算法,看的头都大了
#9
子楠2013-06-15 15:37
六楼正解,这算法、、、、、
1