1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
|
class Doc
{ private :
protected :
public :
Doc( param etc... ) ;
void Nx() { placebo }
void str_upper( char& c )
{ c = toupper(c) ; }
int upr_str( int c )
{ return toupper(c) ; }
template < class T >
class str_upr : public unary_function<char, void>
{ public :
void operator() (char& x) { x = ::toupper(x) ; }
};
void strupper( string & s )
{
//for( size_t i = 0 ; i < s.length() ; i++ )
//s[i] = toupper( s[i] ) ; ok forme naïve
//transform( s.begin(), s.end(), s.begin(), ::toupper ) ; ok
//transform( s.begin(), s.end(), s.begin(), upr_str ) ; ok
void (Doc::*F)(int&) ;
F = &Doc::str_upper ; ok
for_each( s.begin(), s.end(), F ) ; raté
//for_each( s.begin(), s.end(), str_upr<char>() ) ; ok
}
}; |
Partager