2010-11-19 5 views
1

J'ai une classe avec l'opérateur [] surchargé. J'ai aussi un fil pour commencer ... Comment puis-je lier [] au fil?Boost :: bind problème lié opérateur surchargé

J'ai essayé ceci:

threadpool.schedule(bind(static_cast< MyClass (MyClass::*)(const MyClass &arg)>(&MyClass::operator[]), arg))

mais VS2008 dit:

erreur C2664:

'boost::threadpool::thread_pool::schedule': cannot convert parameter 1 from 'boost::_bi::bind_t' to 'const boost::function0 &' 

Comment puis-je résoudre ce problème? Merci d'avance.

+0

Pouvez-vous fournir le code 'MyClass'? – icecrime

Répondre

1

Cela semble faux. Votre fonction membre accepte toujours un argument. Vous avez donc besoin d'un espace réservé, ou vous avez oublié de lier this

threadpool.schedule(bind( 
    static_cast< MyClass (MyClass::*)(const MyClass &arg)>(&MyClass::operator[]), 
    this, arg)) 

Un operator[] qui accepte son type de classe ressemble un peu bizarre cependant. Voici un exemple comment il devrait chercher un opérateur d'indice "habituel"

threadpool.schedule(bind(
    static_cast< MyClass (MyClass::*)(std::size_t)>(&MyClass::operator[]), this, index) 
); 
Questions connexes