我有他以下界面:
template <class T>
class AbstractTask {
public:
virtual void BindTaskCompleted(AbstractTask<T> &bindedTask)=0;
virtual void Join(TaskResult<T>)=0;
};
以及以下实现:
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;
};
我正在尝试将 AbstractTask 实现的虚拟 Join 方法绑定到具有相同签名的 boost::function 。boost::bind 抛出 77 个编译错误,我不明白为什么。
起初我认为 boost::bind 不能与虚拟方法一起使用,但似乎并非如此: Virtual function and boost bind奇怪的行为
在此先感谢您的帮助!
托马斯