FREE Subscription to Dr. Dobb’s Digest: Same Great Content, New Digital Edition
Site Archive (Complete)
C++
Email
Print
Reprint

add to:
Del.icio.us
Digg
Google
Furl
Slashdot
Y! MyWeb
Blink
February 01, 2006

Associative Chains in C++

(Page 6 of 8)

February, 2006: Associative Chains in C++

Listing 4

(a)
template<class Src, class Dst>
class Member_Link : public Typed_Link<Src, Dst>
{
  Dst Src::*mptr;
public:
  Member_Link(Dst Src::*_mptr) : mptr(_mptr)
  {}
  Dst &traverse(Src &s)
  {
    return s.*mptr;
  }
  // ...
};


(b)
template<class Src, class Dst, class Get =  
         Dst &(Src::*)(void) const>
class Get_Link : public Typed_Link<Src, Dst>
{
  Get get;
public:
  Dst &traverse(Src &s)
  {
    return (s.*get)();
  }
  // ...
};


(c)
template<class Src, class Dst>
class Array_Link : public Typed_Link<Src, Dst>
{
  unsigned int index;
public:
  Dst &traverse(Src &id) 
  {
    if (index >= sizeof(Src)/sizeof(Dst)) {
      throw Clank(id);
    }
    return id[Index];
  }
  // ...
};

Previous Page | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 Next Page
TOP 5 ARTICLES
No Top Articles.



MICROSITES
FEATURED TOPIC

ADDITIONAL TOPICS

INFO-LINK