NestFriend.cpp1#include<iostream>
2#include<cstring>
3usingnamespacestd;
4constintsz=20;
5
6structHolder
7{
8private:
9inta[sz];
10public:
11voidinitialize();
12structPointer;
13friend Pointer;
14structPointer
15{
16private:
17Holderh;
18intp;
19public:
20voidinitialize(Holderh);
21voidnext();
22voidprevious();
23voidtop();
24voidend();
25intread();
26voidset(inti);
27};
28};
29
30voidHolder::initialize()
31{
32memset(a,0, szsizeof(int));
33}
34
35voidHolder::Pointer::initialize(Holderrv)
36{
37h=rv;
38p=rv->a;
39}
40
41voidHolder::Pointer::next()
42{
43if(p<&(h->a[sz-1]))
44{
45p++;
46}
47}
48
49voidHolder::Pointer::previous()
50{
51if(p>&(h->a[0]))
52{
53p--;
54}
55}
56voidHolder::Pointer::top()
57{
58p=&(h->a[0]);
59}
60
61voidHolder::Pointer::end()
62{
63p=&(h->a[sz-1]);
64}
65
66intHolder::Pointer::read()
67{
68returnp;
69}
70
71voidHolder::Pointer::set(inti)
72{
73*p=i;
74}
75
76intmain()
77{
78Holder h;
79Holder::Pointer hp, hp2;
80inti;
81
82h.initialize();
83hp.initialize(&h);
84hp2.initialize(&h);
85for(i=0; i<sz; i++)
86{
87hp.set(i);
88hp.next();
89}
90
91hp.top();
92hp2.end();
93for(i=0; i<sz; i++)
94{
95cout<<"hp ="<<hp.read()
96<<", hp2 ="<<hp2.read()<<endl;
97hp.next();
98hp2.previous();
99}
100
101cin.get();
102}
原文链接: https://www.cnblogs.com/zhtf2014/archive/2010/11/10/1874183.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/17191
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!