je lui interface suivante:boost :: bind et fonctions virtuelles
template <class T>
class AbstractTask {
public:
virtual void BindTaskCompleted(AbstractTask<T> &bindedTask)=0;
virtual void Join(TaskResult<T>)=0;
};
Et le implentation suivant:
template <class T>
class SlaveTask: public AbstractTask<T> {
public:
typedef boost::function<void(TaskResult<T>)> joinFunction;
void BindTaskCompleted(AbstractTask<T> &bindedTask)
{
/////////////WORK OK//////////////////////////////
//bindedTask.Join(result);
/////////////COMPILATION ERROR/////////////////////
slaveTaskCompletionFunction=boost::bind(&AbstractTask<T>::Join,bindedTask,result);
}
void Join(TaskResult<T> r)
{
slaveTaskCompletionFunction(r);
}
private:
joinFunction slaveTaskCompletionFunction;
TaskResult<T> result;
};
J'essaie de lier le virtuel méthode join d'une mise en œuvre à AbstractTask une fonction boost :: avec la même signature. boost :: bind jette 77 erreurs de compilation et je ne vois pas pourquoi.
Je pensais au début que boost :: bind ne peut pas être utilisé avec la méthode virtuelle, mais cela ne semble pas être le cas: Virtual function and boost bind strange behavior
Merci d'avance pour votre aide!
Thomas
Quels sont les erreurs de compilation? – Ylisar