在C ++中使用friend方法的两个类

时间:2013-06-17 20:03:38

标签: c++ friend friend-class

目前我正在阅读一本关于C++的书,它有一些练习。其中一个练习要求构建两个类,其中每个类都有另一个朋友方法。我目前的猜测是这样的:

#include <iostream>

using std::cout;
using std::endl;

class Y;

class X{
public:
   void friend Y::f(X* x);
   void g(Y* y){cout << "inside g(Y*)" << endl;}
};

class Y{
public:
   void friend X::g(Y* y);
   void f(X* x) {cout << "inside f(X*)"  << endl;}
};

但是我的猜测没有编译,因为类Xvoid friend Y::f(X* x);方法声明。我该如何解决这个难题?请给我一些猜测。

1 个答案:

答案 0 :(得分:4)

为了将函数声明为朋友,编译器必须首先看到它,并且C ++不允许成员函数的前向声明。因此,您想要做的事情是不可能的。您可以尝试使用here中的“密钥”方法。

或者,您可以将void friend Y::f(X* x);替换为friend class Y;