菜鸟求教:友元函数
#include<iostream>
using namespace std;
class BBank;
class GBank;
class CBank
{
int balance;
public:
CBank(){balance=100;}
friend int sum(CBank, BBank,GBank);
};
class BBank
{
int balance;
public:
BBank(){balance=200;}
friend int sum(CBank,BBank,GBank);
};
class GBank
{
int balance;
public:
GBank(){balance=300;}
friend int sum(CBank,BBank,GBank);
};
int sum(CBank *s1,BBank *s2,GBank *s3)
{
return (s1->balance+s2->balance+s3->balance);
}
void main()
{
CBank s1;
BBank s2;
GBank s3;
cout<<"三家银行的存款总额为:"<<sum(&s1,&s2,&s3)<<endl;
}
这个程序我调试有错,说是函数sum无法访问私有数据成员,但是我把友元函数和主函数换成下面这个就行了:
int sum(CBank s1,BBank s2,GBank s3)
{
return (s1.balance+s2.balance+s3.balance);
}
void main()
{
CBank s1;
BBank s2;
GBank s3;
cout<<"三家银行的存款总额为:"<<sum(s1,s2,s3)<<endl;
}
请大虾求解!
[解决办法]
int sum(CBank *s1,BBank *s2,GBank *s3)//定义和上面的声明不匹配 。这里传的是指针···
[解决办法]
楼上正解,把分给他吧。
[解决办法]
声明的时候没有指针,但定义的时候有指针,所以出错了,你改成下面这个是因为你的声明和定义一致了
[解决办法]
其实弄复杂了,我认为.你直接在三个类中,定义一个返回balance的函数.然后就不用友元了.你要是故意那样做用来测试友元的或者