C++关于把成员函数作为另一个类的友元

class A{
public:
void ee();
};
class B{
friend void A::ee();
int i = 0;
};
void A::ee() { return i; }
哪里有问题?
为什么找不到i?

第1个回答  推荐于2016-01-22
友元可以操作认可它的类的私有成员。那个ee函数里,连对象对没有,怎么去找那个所谓的i啊?
示例的话,可以这样:
void A::ee(){ B b; return b.i }本回答被提问者采纳
第2个回答  2014-12-15

可以的,不过你的代码错误太多,参考我下面的写法:

class B;
class A{
   public:
  int ee(B&);
};
class B{
friend int A::ee(B&);
   int i;
};
int A::ee(B& b) { return b.i; }

追问

class B一定要声明在A外面么?
声明在A里面就变成什么了?

追答

class B必须在A类定义前声明,因为A、B有混用的情况,放在前面只是声明一下。

第3个回答  2014-12-15
返回类型void,还Return i;??

追问

==这不是重点,关键是编译器说找不到i

第4个回答  2014-12-15
去掉=0 应该就OK了
相似回答