📄 friend1.c
字号:
// Build don't link:// f() should be able to access B::j, as of FDIS [class.protected]/1// Subject: Re: [bug] Inheritance and friend access control broken// References: <199803032141.WAA09332@piano.dptmaths.ens-cachan.fr>// <orhg5ff544.fsf@iguacu.dcc.unicamp.br>// <199803041125.MAA06937@cor.dptmaths.ens-cachan.fr>// <orn2f6ek92.fsf@iguacu.dcc.unicamp.br> <19980304102900.46897@dgii.com>// From: Alexandre Oliva <oliva@dcc.unicamp.br>// Date: 06 Mar 1998 01:43:18 -0300template <int*>class X {};template <typename T>void g();struct S;template <typename T>struct R;class B {protected: int i; // ERROR - in this context static int j;};class D : public B { friend void f(); template <typename T> friend void g(); friend struct S; template <typename T> friend struct R;};struct S { void h(); X<&B::j> x;};template <typename T>struct R { void h(); X<&B::j> x;};B b;D d;void f(){ b.i = 3; // ERROR - protected d.i = 4; B::j = 5; D::j = 6;}template <typename T>void g(){ b.i = 3; // ERROR - protected d.i = 4; B::j = 5; D::j = 6;}template void g<int>();void S::h(){ b.i = 3; // ERROR - protected d.i = 4; B::j = 5; D::j = 6;}template <typename T>void R<T>::h() { b.i = 3; // ERROR - protected d.i = 4; B::j = 5; D::j = 6;}template struct R<double>;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -