Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[newbie] Pointeur sur fonction membre sans connaître sa classe

2 réponses
Avatar
TSalm
Bonjour,

Est-il possible de créer des fonctions prenant en paramétre un
pointeur sur une fonction membre sans connaître la classe de cette
fonction membre ?
Evidemment, la signature de la fonction membre pointée reste la même.

D'avance merci,
TSalm

2 réponses

Avatar
Nicolas Deslandes
En utilisant une fonction template c'est possible. Voici un petit exemple:

#include <iostream>
#include <string>

using namespace std;

class A
{
public:
size_t f(const string& s ) { return s.size(); }
};

template<class T>
size_t apply(size_t (T::*pf)(const string&), const string& str)
{
T a;
return (a.*pf)(str);
}

int main()
{
cout << "Returned: " << apply(&A::f, "Hello!") << endl;
}


Ici la fonction apply peut s'appliquer a n'importe quelle classe.

--
Nicolas

"TSalm" wrote in message
news:
Bonjour,

Est-il possible de créer des fonctions prenant en paramétre un
pointeur sur une fonction membre sans connaître la classe de cette
fonction membre ?
Evidemment, la signature de la fonction membre pointée reste la même.

D'avance merci,
TSalm


Avatar
TSalm
Il faut vraiment que je me mettes aux templates.
Merci

Le Sat, 04 Aug 2007 23:25:19 GMT, "Nicolas Deslandes"

En utilisant une fonction template c'est possible. Voici un petit exemple:

#include <iostream>
#include <string>

using namespace std;

class A
{
public:
size_t f(const string& s ) { return s.size(); }
};

template<class T>
size_t apply(size_t (T::*pf)(const string&), const string& str)
{
T a;
return (a.*pf)(str);
}

int main()
{
cout << "Returned: " << apply(&A::f, "Hello!") << endl;
}


Ici la fonction apply peut s'appliquer a n'importe quelle classe.