2010-07-13 3 views
2

J'utilise boost::signal avec différentes signatures de fonctions et différents combineurs. Dans une classe qui ressemble à celle au-delà, je veux obtenir le retour d'une certaine déclaration de signal.Comment obtenir le type de retour d'un boost :: signal?

template<typename signal_type> class MyClass 
{ 

    signal_type mSignal; 

    signal_type::result_type getResult() { return mSignal(); } 

} 

Mais signal_type::result_type ne fonctionne pas. Alors, y a-t-il un moyen d'obtenir le type de retour?

+1

C'est toujours une bonne idée d'afficher l'erreur que vous rencontrez. –

+0

Je ne suis pas, signal_type :: result_type est le type de retour, ce qui ne fonctionne pas? – Konrad

+0

@Konrad: voir le lien j'ai commenté dans la réponse acceptée – Cogwheel

Répondre

2

Vous avez besoin typename d'utiliser des types dépendants:

typename signal_type::result_type getResult() { return mSignal(); } 

noms à charge (c.-à-dépendant d'un paramètre de modèle) sont supposés

  • nomme pas les types moins préfixé avec typename et
  • pas de modèles de noms, sauf si le préfixe est template.
+0

Voir http://pages.cs.wisc.edu/~driscoll/typename.html pour la bonté en profondeur. – Cogwheel

+0

Merci, exactement ce que je cherchais. – rallex

Questions connexes