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 + -
显示快捷键?