设置了友元却 cannot access private member declared in class,解决必重谢!该如何处理
设置了友元却 cannot access private member declared in class,解决必重谢!!!!!!!!!!!!!!!!!!
编译时报错:
error C2248: 'num' : cannot access private member declared in class 'Ratio'
see declaration of 'num'
error C2248: 'den' : cannot access private member declared in class 'Ratio'
see declaration of 'den'
error C2593: 'operator <<' is ambiguous
执行 cl.exe 时出错.
1 error(s), 0 warning(s)
明明已经设置了友元,为什么不能访问私有变量啊?本人小白一名,求大神指教!必重谢!
------解决思路----------------------
没看出啥问题,试了一下(vs2013)也可以。
------解决思路----------------------
同没看出问题,试了下,VS2013 和 GCC4.8 下也没有问题
------解决思路----------------------
试了下,VS2010 和 GCC4.8 下也没有问题
#include<iostream>
using namespace std;
class Ratio{
riend Ratio operator*(const Ratio&,const Ratio&);
friend ostream& operator<<(ostream&,const Ratio&);
private:
int num,den;
static int count;
public:
Ratio(int n=1,int d=1):num(n),den(d){cout<<"Radio lives!"<<endl; count++;};
Ratio(const Ratio& r):num(r.num),den(r.den){cout<<"Copy!"<<endl; count++;};
~Ratio(){cout<<"Radio dies!"<<endl; count--;};
Ratio& operator=(const Ratio&);
static int getCount(){return count;};
};
int Ratio::count=0;
Ratio& Ratio:: operator=(const Ratio& r){
num=r.num;
den=r.den;
cout<<"Overwrite = !"<<endl;
return *this;
}
ostream& operator<<(ostream& o,const Ratio& r){
o<<r.num<<"/"<<r.den;
return o;
}
Ratio operator*(const Ratio& r1,const Ratio& r2){
return Ratio(r1.num*r2.num,r1.den*r2.den);
}
编译时报错:
error C2248: 'num' : cannot access private member declared in class 'Ratio'
see declaration of 'num'
error C2248: 'den' : cannot access private member declared in class 'Ratio'
see declaration of 'den'
error C2593: 'operator <<' is ambiguous
执行 cl.exe 时出错.
1 error(s), 0 warning(s)
明明已经设置了友元,为什么不能访问私有变量啊?本人小白一名,求大神指教!必重谢!
------解决思路----------------------
没看出啥问题,试了一下(vs2013)也可以。
------解决思路----------------------
同没看出问题,试了下,VS2013 和 GCC4.8 下也没有问题
------解决思路----------------------
试了下,VS2010 和 GCC4.8 下也没有问题