Bonjour � tous,
Je suis en train de faire un test simple de capture d'une fonction par une autre.
�a c'est la version � l'ancienne, le truc c'est qu'il faut que je cr�er autant de surcharge que le nombre max de param�tre de la m�thode que je veux capturer. Donc je me suis dit autant passer par les template variadic:
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 template<typename ResultType, typename ParameterType1> void CaptureMethod(ResultType(*func)(ParameterType1)) { } template<typename ResultType, typename ParameterType1, typename ParameterType2> void CaptureMethod(ResultType(*func)(ParameterType1, ParameterType2)) { } template<typename ResultType, typename ParameterType1, typename ParameterType2, typename ParameterType3> void CaptureMethod(ResultType(*func)(ParameterType1, ParameterType2, ParameterType3)) { } int f1(int) { return 0; } int f2(int, int) { return 0; } int f3(int, int, int) { return 0; } int main() { CaptureMethod(f1); CaptureMethod(f2); CaptureMethod(f3); return 0; }
Maintenant j'aimerais pouvoir capturer des fonctions qui ont un nombre de param�tres variables:
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 template<typename ResultType, typename... ParametersTypes> void CaptureMethod(ResultType(*func)(ParametersTypes...)) { } int f1(int) { return 0; } int f2(int, int) { return 0; } int f3(int, int, int) { return 0; } int f10(int, int, int, int, int, int, int, int, int, int) { return 0; } int main() { CaptureMethod(f1); CaptureMethod(f2); CaptureMethod(f3); CaptureMethod(f10); return 0; }
Mais l� �a ne compile pas (je suis sous Visual 2017). Est-ce possible de capturer une fonction � nombre de param�tres variables? J'avoue que l� je n'ai pas trop d'id�es.
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10
11
12 template<typename ResultType, typename... ParametersTypes> void CaptureMethod(ResultType(*func)(ParametersTypes...)) { } int fVariable(...) { return 0; } int main() { CaptureMethod(fVariable); return 0; }
Partager