📄 inherit2.c
字号:
// Build don't link:// Make sure we make the right unqualified class a friend// See PR c++/4403template <class T> struct A{ struct AA; struct AC;};template <class T> class B :public A<T>{ friend struct B::AA; // OK, this has an implicit typename // as if it is 'friend struct typename B::AA' // (I think there's a defect report // about that) friend struct AC; // this makes ::AC a friend *not* A<T>::AC private: // only our friends can get out values static T valueA_AA; static T valueA_AC; static T value_AC;};template <typename T> T B<T>::valueA_AA;template <typename T> T B<T>::valueA_AC;// ERROR - private - XFAIL *-*-*template <typename T> T B<T>::value_AC; // gets bogus error - XFAIL *-*-*// this one is a friendtemplate <class T> struct A<T>::AA{ int M () { return B<T>::valueA_AA; }};// this is not a friendtemplate <class T> struct A<T>::AC{ T M () { return B<T>::valueA_AC; // ERROR - within this context - XFAIL *-*-* }};// this is a friendstruct AC { int M () { return B<int>::value_AC; // gets bogus error - XFAIL *-*-* }};B<int> b;A<int>::AA a_aa;A<int>::AC a_ac;AC ac;int main (){ a_aa.M (); a_ac.M (); ac.M ();}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -