home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / IDIOMS.ZIP / 2TABLE.C < prev    next >
C/C++ Source or Header  |  1991-12-04  |  812b  |  36 lines

  1. /* Copyright (c) 1992 by AT&T Bell Laboratories. */
  2. /* Advanced C++ Programming Styles and Idioms */
  3. /* James O. Coplien */
  4. /* All rights reserved. */
  5.  
  6. #include <iostream.h>
  7. #include <string.h>
  8.  
  9. class Table {
  10. public:
  11.     void sort() { cout << "sorted \"" << nameV << "\"\n"; }
  12.     Table(const char *name1, const char *name2) {
  13.         nameV = new char[strlen(name1)+strlen(name2)+1];
  14.         strcpy(nameV, name1);
  15.         strcpy(nameV+strlen(name1), name2);
  16.     }
  17. private:
  18.     char *nameV;
  19. };
  20.  
  21. class X {
  22. public:
  23.     Table t1, t2;
  24.     X(const char*name): t1(name, ":X::t1"), t2(name, ":X::t2") { }
  25. };
  26.  
  27. int main() {
  28.     Table X::*tablePointer = &X::t1;
  29.     X a = "a", *b = new X("b");
  30.     (a.*tablePointer).sort();
  31.     (b->*tablePointer).sort();
  32.     tablePointer = &X::t2;
  33.     (a.*tablePointer).sort();
  34.     (b->*tablePointer).sort();
  35. }
  36.