Ignore:
Timestamp:
Oct 5, 2009, 9:14:28 PM (16 years ago)
Author:
Frederik Heber <heber@…>
Children:
dcbdf2
Parents:
4bc937
Message:

even the class of the member function can be templated, see ActOnAllUnitTest.

Note however that specializations of templated member functions are not allowed.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • molecuilder/src/ActOnAlltest.hpp

    r4bc937 rd40b96  
    2626  void EmptyList();
    2727
    28   template <typename res, typename T> void ActOnAllVectors( res (Vector::*f)(T), T t );
    29   template <typename res, typename T, typename U> void ActOnAllVectors( res (Vector::*f)(T, U), T t, U u );
    30   template <typename res, typename T, typename U, typename V> void ActOnAllVectors( res (Vector::*f)(T, U, V), T t, U u, V v);
     28  template <typename klasse, typename res, typename T> void ActOnAll( res (klasse::*f)(T), T t );
     29  template <typename klasse, typename res, typename T, typename U> void ActOnAll( res (klasse::*f)(T, U), T t, U u );
     30  template <typename klasse, typename res, typename T, typename U, typename V> void ActOnAll( res (klasse::*f)(T, U, V), T t, U u, V v);
    3131
    3232  bool operator == (VectorList &rhs);
     
    7070VectorList::~VectorList() { };
    7171
    72 template <typename res, typename T> void VectorList::ActOnAllVectors( res (Vector::*f)(T), T t )
     72template <typename klasse, typename res, typename T> void VectorList::ActOnAll( res (klasse::*f)(T), T t )
    7373{
    74   Vector *test = NULL;
    75   for (ListOfVectors::iterator Runner = Vectors.begin(); Runner != Vectors.end(); Runner++) {
    76     test = *Runner;
    77     (test->*f)(t);
    78   }
     74  for (ListOfVectors::iterator Runner = Vectors.begin(); Runner != Vectors.end(); Runner++)
     75    ((*Runner)->*f)(t);
    7976};
    8077
    81 template <typename res, typename T, typename U> void VectorList::ActOnAllVectors( res (Vector::*f)(T, U), T t, U u )
     78template <typename klasse, typename res, typename T, typename U> void VectorList::ActOnAll( res (klasse::*f)(T, U), T t, U u )
    8279{
    83   Vector *test = NULL;
    84   for (ListOfVectors::iterator Runner = Vectors.begin(); Runner != Vectors.end(); Runner++) {
    85     test = *Runner;
    86     (test->*f)(t, u);
    87   }
     80  for (ListOfVectors::iterator Runner = Vectors.begin(); Runner != Vectors.end(); Runner++)
     81    ((*Runner)->*f)(t, u);
    8882};
    8983
    90 template <typename res, typename T, typename U, typename V> void VectorList::ActOnAllVectors( res (Vector::*f)(T, U, V), T t, U u, V v)
     84template <typename klasse, typename res, typename T, typename U, typename V> void VectorList::ActOnAll( res (klasse::*f)(T, U, V), T t, U u, V v)
    9185{
    92   Vector *test = NULL;
    93   for (ListOfVectors::iterator Runner = Vectors.begin(); Runner != Vectors.end(); Runner++) {
    94     test = *Runner;
    95     (test->*f)(t, u, v);
    96   }
     86  for (ListOfVectors::iterator Runner = Vectors.begin(); Runner != Vectors.end(); Runner++)
     87    ((*Runner)->*f)(t, u, v);
    9788};
    9889
Note: See TracChangeset for help on using the changeset viewer.