J'essaye d'implémenter une classe de modèle qui exige d'avoir un membre de signal qui dépend de l'argument de modèle. Ma première idée était de réaliser comme ce qui suit:Comment implémenter une classe de template avec un membre de signal dépendant d'un template de boost?
Une cette classe doit être utilisé comme:
class SignaledClass
{
public:
SignaledClass(void)
{
SignalClass<int> var1(boost::bind(&SignaledClass::ReceiveINT, this));
SignalClass<double> var2(boost::bind(&SignaledClass::ReceiveDOUBLE, this));
}
void ReceiveINT(int &_val)
{
...
}
void ReceiveDOUBLE(double &_val)
{
...
}
}
(BTW: Je sais que cela n'a aucun sens de créer l'objet SignalClass juste à l'intérieur du constructeur, c'est juste pour comprendre mon problème.)
Il est important pour moi de réaliser un concept de type délégué avec un modèle comme paramètre de signal.
Le problème est que le code du constructeur ne fonctionne pas.
Mais j'ai trouvé une solution.
Si je précise en outre une typedef
supplémentaire comme
typedef typename OnReceive::slot_type slot_type;
et utilise ce paramètre pour le constructeur, comme
PushInputSlot(const slot_type& _slot);
le cela fonctionne. Mais je ne sais pas vraiment pourquoi.
J'espère que quelqu'un peut m'aider.
Thanx, Frank
P.S .: Je suis nouveau sur des thats stackoverflow pourquoi je ne suis pas au courant des règles ici. Espère que je l'ai fait tout à la bonne façon ...; -) ....
On dirait que vous êtes bien sur votre chemin ... juste un manque 'typename' ici et là ... mais pourquoi voulez-vous envelopper la classe' boost :: signal' l'intérieur quelque chose au lieu d'utiliser directement dans 'SignaledClass' ? – Potatoswatter