这个友元函数为什么不能用呢?

来源:百度知道 编辑:UC知道 时间:2024/06/06 09:21:12
#include<iostream>
using namespace std;
class CCar;
class CBoat;
int totalWeight(CBoat b,CCar c);
class CBoat
{
public:
CBoat();
CBoat(int w):m_weight(w){};
friend int totalWeight(CBoat b,CCar c);
private:
int m_weight;
};
class CCar
{
public:
CCar();
CCar(int w):m_weight(w){};
friend int totalWgeiht(CBoat b,CCar c);
private:
int m_weight;
};
int totalWeight(CBoat b,CCar c)
{
return b.m_weight+c.m_weight; //这里为什么出错呢?
}
int main()
{
CBoat B(1000);
CCar C(2000);
cout<<"The total weight of boat and car is :"<<endl;
cout<<totalWgeiht(B,C)<<endl;
}

程序错行:cpp(26) : error C2248: 'm_weight' : cannot access private member declared in class 'CCar'
这是为什么?

这是马虎的错!!!
你定义class CCar时的friend int totalWgeiht(CBoat b,CCar c)中的totalWgeiht打错了…………应该是totalWeight
当然不行了,编译时他只说CCar的问题,而没说CBoat的问题,且CCar和CBoat若是逻辑出错应该是同对同错的,所以一定是你在CCar内部出问题了