5

目前我正在读一本书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);方法声明。我怎样才能解决这个难题?请再给我一些猜测。

4

1 回答 1

5

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

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

于 2013-06-17T20:17:07.123 回答