我有他如下界面:的boost ::绑定和虚拟功能
template <class T>
class AbstractTask {
public:
virtual void BindTaskCompleted(AbstractTask<T> &bindedTask)=0;
virtual void Join(TaskResult<T>)=0;
};
而下面implentation:
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实施的方法具有相同签名的boost :: function。 boost :: bind抛出77个编译错误,我看不出为什么。
我原先以为的boost ::绑定无法与虚拟的方法来使用,但这似乎并没有这样的情况: Virtual function and boost bind strange behavior
预先感谢您的帮助!
托马斯
什么编译错误? – Ylisar