Files Classes Functions Hierarchy
00001 #ifndef FNOBJ_H 00002 #define FNOBJ_H 00003 00004 /* 00005 Implmenting functional objects with virtual functions. 00006 00007 Use templates if you want direct bindings, this is for 00008 dynamic purposes. 00009 */ 00010 00016 template< class A0 > 00017 class fnobj0 00018 { 00019 public: 00020 00021 virtual A0 operator () () = 0; 00022 virtual ~fnobj0() {} 00023 }; 00024 00030 template< class A0 > 00031 class fnobj0const 00032 { 00033 public: 00034 00035 virtual A0 operator () () const = 0; 00036 virtual ~fnobj0const() {} 00037 }; 00038 00039 00045 template< class A0, class A1 > 00046 class fnobj1 00047 { 00048 public: 00049 00050 virtual A0 operator () (A1) = 0; 00051 virtual ~fnobj1() {} 00052 }; 00053 00059 template< class A0, class A1 > 00060 class fnobj1const 00061 { 00062 public: 00063 00064 virtual A0 operator () (A1) const = 0; 00065 virtual ~fnobj1const() {} 00066 }; 00067 00073 template< class A0, class A1, class A2 > 00074 class fnobj2 00075 { 00076 public: 00077 00078 virtual A0 operator () (A1,A2) = 0; 00079 virtual ~fnobj2() {} 00080 }; 00081 00087 template< class A0, class A1, class A2 > 00088 class fnobj2const 00089 { 00090 public: 00091 00092 virtual A0 operator () (A1,A2) const = 0; 00093 virtual ~fnobj2const() {} 00094 }; 00095 00096 00102 template< class A0, class A1, class A2, class A3 > 00103 class fnobj3 00104 { 00105 public: 00106 00107 virtual A0 operator () (A1,A2,A3) = 0; 00108 virtual ~fnobj3() {} 00109 }; 00110 00116 template< class A0, class A1, class A2, class A3 > 00117 class fnobj3const 00118 { 00119 public: 00120 00121 virtual A0 operator () (A1,A2,A3) const = 0; 00122 virtual ~fnobj3const() {} 00123 }; 00124 00125 00126 #endif 00127
1.5.8