如何检查班级友谊?

时间:2019-05-20 21:01:59

标签: c++ friend typetraits

标准库提供了许多有用的“是”类型特征,这些特征描述了两个类的关系,例如is_base_ofis_convertibleis_same等。有什么方法可以实现类型is_friend来告诉A类是否是B类的朋友?

示例代码:

class A {};
class B { friend class A; };
class C { friend class B; };

is_friend<A, B>; // true
is_friend<B, A>; // false
is_friend<B, C>; // true
is_friend<A, C>; // false

1 个答案:

答案 0 :(得分:0)

否,这是不可能的。在您的示例中,B中的任何内容都没有任何访问限制,因此A的友情无效。由于友谊既不会继承也不会传递,因此无法使用诸如从相关类继承并添加私人成员之类的技巧。