2010-07-13 9 views
1

Le code suivant renvoie une erreur à la ligne où je veux créer un objet foncteur de Test::fun2:problème avec boost :: bind

#include <boost/shared_ptr.hpp> 
#include <boost/bind.hpp> 
#include <boost/function.hpp> 

using namespace boost; 

class Test 
{ 

public: 
float fun1() { return 0.0f; } 
void fun2(float x) {} 

}; 

int main(int argc, char* argv[]) 
{ 

shared_ptr<Test> p = shared_ptr<Test>(new Test); 

function<float(void)> f1 = bind(&Test::fun1, p); 
function<void(float)> f2 = bind(&Test::fun2, p); 

return 1; 

} 

Le compilateur me donne un ensemble d'erreurs de modèle et

`void (Test::*)(float)' is not a class, struct, or union type 

qui semble être l'erreur principale. Néanmoins, je n'ai aucune idée de quel est le problème ici et comment le résoudre.

Répondre

2

Problème résolu: J'ai utilisé la mauvaise syntaxe.

fonction f2 = bind (& Test :: fun2, p, _1);

fonctionne.

+1

vous pouvez accepter votre propre réponse. –

+0

Le titre du problème fait un peu défaut! – Ant