c++中两个带友元方法的类
Two classes with friend methods in C++
目前我在读一本关于C++
的书,里面有一些练习。其中一个练习要求构建两个类,其中每个类都有另一个类的friend方法。我目前的猜测是这样的:
#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);
方法声明。我怎样才能解开这个谜题?
为了将函数声明为友元,编译器必须先看到它,而c++不允许对成员函数进行前向声明。因此,你想要做的事情是不可能以你想要的方式实现的。你可以从这里尝试使用"passkey"方法。
或者,您可以将void friend Y::f(X* x);
替换为friend class Y;
。
相关文章:
- C++模板来检查友元函数的存在
- 模板类无法识别友元运算符
- 如何使用单独文件中的派生类访问友元函数对象
- 模板化的类和友元函数
- 为什么创建友元类的实例会导致"undefined reference to"错误?
- 如何在嵌套类中正确使用友元声明?
- 友元函数无法访问私有数据成员 (c++)
- 将子类方法声明为基类的友元
- 在模板类之外定义友元函数的正确方法是什么?
- 友元方法作为常量
- Scott Meyers关于首选非成员非友元方法的建议是否适用于对象构造?
- 如何访问友元类方法?
- 友元方法参数列表中的不同模板专用化
- 类定义交叉引用时如何声明友元方法
- 在C++中使用非友元方法重载 I/O 运算符 |&istream 和 &ostream 函数
- 在模板类中重载友元运算符方法
- 私有基类通过子类中的模板友元函数和模板方法影响成员访问
- c++中两个带友元方法的类
- 重用代码:友元方法与非友元方法
- 友元方法不能访问嵌套类