我有他如下界面:的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