class g { class t; friend t; private : int a; public : class t { public : void print() { cout << "class_t print " << g::a <<"\n"; }; }; }; void main() { g::t tt; tt.pritn(); }
class t, print是私有,改为共有 C/C++ code class g { class t; friend t; private : int a; public : class t { public : void print() { cout << "class_t print " << g::a <<"\n"; }; }; }; void main() { g::t tt; tt.pritn(); }
#include #include using namespace std; class g { friend class t; private : int a; public : g(int a = 0):a(a){}; class t { public : void print(g g1) { cout << "class_t print " << g1.a <<"\n"; }; }; }; int main() { g g1(9); g::t tt; //创建t的实例 tt.print(g1); //lz调用时别忘了参数 }
嵌套类的用法是先声明这个类,然后声明他为友元类,然后定义这个友元类,三部曲。 g1.t tt;(提示这里出错) 这个当然不行,私有实现。
class g { private : static int a; public : class t { public : void print() { cout << "class_t print "< }; }; }; int g::a = 0; int _tmain(int argc, _TCHAR* argv[]) { g::t tt; tt.print(); system("PAUSE"); return 0; }