p2746.c
来自「this is a gcc file, you can download it 」· C语言 代码 · 共 157 行
C
157 行
// Build don't link: // GROUPS passed scope ptclass Link {public: Link(); Link(Link *);private: Link *next_;friend class IListBase;friend class IListIterBase;};inlineLink::Link() : next_(0){}inlineLink::Link(Link *next) : next_(next){}class IListBase {public: IListBase(); IListBase(Link *); void append(Link *); void insert(Link *); Link *head(); int empty(); Link *get(); void remove(Link *);private: Link *head_;friend class IListIterBase;};inlineIListBase::IListBase() : head_(0){}inlineIListBase::IListBase(Link *head) : head_(head){}inlinevoid IListBase::insert(Link *p){ p->next_ = head_; head_ = p;}inlineLink *IListBase::head(){ return head_;}inlineint IListBase::empty(){ return head_ == 0;}inlineLink *IListBase::get(){ Link *tem = head_; head_ = head_->next_; return tem;} template<class T> class IListIter;template<class T>class IList : private IListBase {public: IList() { } IList(T *p) : IListBase(p) { } ~IList(); void append(T *p) { IListBase::append(p); } void insert(T *p) { IListBase::insert(p); } void remove(T *p) { IListBase::remove(p); } T *head() { return (T *)IListBase::head(); } T *get() { return (T *)IListBase::get(); } IListBase::empty;friend class IListIter<T>;};template<class T>IList<T>::~IList(){ while (!empty()) delete get();}class IListIterBase {public: IListIterBase(const IListBase &); int done(); Link *cur(); void next();private: Link *p_;};inlineIListIterBase::IListIterBase(const IListBase &list) : p_(list.head_){}inlineint IListIterBase::done(){ return p_ == 0;}inlineLink *IListIterBase::cur(){ return p_;}inlinevoid IListIterBase::next(){ p_ = p_->next_;}template<class T>class IListIter : private IListIterBase {public: IListIter(const IList<T> &list) : IListIterBase(list) { } T *cur() { return (T *)IListIterBase::cur(); } IListIterBase::next; IListIterBase::done;};struct A { IList<Link> list; int x; void foo();};void A::foo(){ for (IListIter<Link> iter(list); !iter.done(); iter.next()) ; x = 0;}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?