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

请帮忙看看友元那里出错了?谢谢

caolihui1008 发布于 2009-10-20 13:21, 422 次点击

#include<iostream>
using namespace std;

class juzhen
{
private:
int a[2][3];
public:
    juzhen();
    juzhen(int c[][3]);
    friend juzhen operator+(const juzhen& c,const juzhen& b);
    ~juzhen() {}

};

juzhen::juzhen(int c[][3])
{
    int i,j;
    for(i=0;i<=1;i++)
        for(j=0;j<=2;j++)
        {
        a[i][j]=c[i][j];
        }
}
juzhen::juzhen()
{
int i,j;
    for(i=0;i<=1;i++)
        for(j=0;j<=2;j++)
        {
        a[i][j]=0;
        }
}
juzhen operator+(const juzhen& c,const juzhen& b)
{
 juzhen d;   
  int j;
  for(int i=0;i<=1;i++)
      for(j=0;j<=2;j++)
      {
      d.a[i][j]=c.a[i][j]+b.a[i][j];      
      }
    return d;
}

int main()
{
    int a[2][3]={23,34,45,34,23,45};
    int b[2][3]={23,45,56,23,46,67};

juzhen a1(a);
juzhen a2(b);
juzhen a3;
return 0;
}
2 回复
#2
caolihui10082009-10-20 14:00
似乎将+改成×就可以了,为什么?
#3
caolihui10082009-10-20 14:01
这是简化后类似的

#include<iostream>
using namespace std;
 
class juzhen
{
private:
int a;
public:
    juzhen(int c)
    {a=c;}
    friend juzhen operator+ (const juzhen& c,const juzhen& b);
 
};
 
 
 
juzhen operator+(const juzhen& c,const juzhen& b)
{
 juzhen d(23);     
  
    return d;
}
 
int main()
{     
juzhen a2(23);
juzhen a3(234);
return 0;
}
1