目前我正在阅读一本关于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;}
};
但是我的猜测没有编译,因为类X
有void friend Y::f(X* x);
方法声明。我该如何解决这个难题?请给我一些猜测。
答案 0 :(得分:4)
为了将函数声明为朋友,编译器必须首先看到它,并且C ++不允许成员函数的前向声明。因此,您想要做的事情是不可能的。您可以尝试使用here中的“密钥”方法。
或者,您可以将void friend Y::f(X* x);
替换为friend class Y;
。