J'ai une autre question sur les fonctions de référence. Par exemple, je dois cette définition:Travailler avec les références de fonction
typedef boost::function<bool (Entity &handle)> behaviorRef;
std::map< std::string, ptr_vector<behaviorRef> > eventAssociation;
La première question est la suivante: comment insérer des valeurs dans un tel objet de la carte?
J'ai essayé:
eventAssociation.insert(std::pair< std::string, ptr_vector<behaviorRef> >(eventType, ptr_vector<behaviorRef>(callback)));
Mais l'erreur:
no matching function for call to ‘boost::ptr_vector<boost::function<bool(Entity&)> >::push_back(Entity::behaviorRef&)’
Et j'undersatnd, mais ne peut rendre le code réalisable.
La deuxième question est comment appeler de telles fonctions? Par exemple, j'ai un objet de behaviorRef, comment l'appeler avec boost :: bind avec mes propres valeurs?
Comme astuce, vous pouvez utiliser 'std :: make_pair()' au lieu de construire la paire directement; Cela vous évite d'avoir à écrire les paramètres du template de la paire. –
@ james-mcnellis merci pour le pourboire! – Ockonal