std::Bind : une fonction de type void sans arguments
	
	
		Bonjour,
Je travail sur un interface utilisateur très simple pour un petit jeu.
Dans la classe de l'interface nommée "UI", il y a une méthode: AddButton (pour ajouter un bouton à l'interface) qui prend en arguments les informations nécessaire à la création de ce bouton.
Bien sûr, il y a une classe Button qui une fonction "BindAction" (lorsque le bouton est actionné, la fonction associée au bouton est exécutée).
Le problème: c'est qu'il faut bien la relier cette fonction a mon pointeur dans la classe Bouton.
La classe bouton:
	Code:
	
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
   |  
//.h
class Button
{
public:
void BindAction(std::function<void()> *function);
void PlayAction();
 
private:
std::function<void()> m_function;
}
 
//.cpp
void Button::BindAction(function<void()> *function)
{
m_function = bind(&function);
}
 
void Button::PlayAction()
{
m_function();
} | 
 La fonction d'ajout de bouton dans l'interface (en réalité elle est plus complexe mais je la simplifie en donnant que la fonction à bind):
	Code:
	
1 2 3 4 5 6
   |  
void UI::AddButton(function<void()> function)
{
ButtonArray.push_back(Button()) //Ajout d'un bouton
ButtonArray.back().BindAction(&function);
} | 
 Et pour finir la création de l'UI + Bouton dans la le jeu en essayant de binder un simple fonction.
	Code:
	
1 2 3
   |  
UI MyUI;
MyUI.AddButton(&Game::TestFunction);  | 
 La compilation ne s'effectue pas et j'ai tout un tas d'erreur en rapport avec la "functional.h":
error C2664: 'void std::_Func_class<_Ret,>::_Set(std::_Func_base<_Ret,> *)' : cannot convert argument 1 from '_Myimpl *' to 'std::_Func_base<_Ret,> *'
1>          with
1>          [
1>              _Ret=void
1>          ]
Je ne vous donne qu'une partie mais d'après ce que j'ai compris ça un rapport avec l'emplacement de la fonction dite (Game:: ).
Le problème c'est que je n'es pas trouvé de tuto ou d'exemple sur le std::bind de fonction de type void ne prenant pas d'arguments :(
Cependant, il existe peut être une autre méthode plus simple pour mon problème étant donné le simple "reliage" de deux fonctions !
Merci :)