../1.63/boost/bind/bind.hpp:75:22:類型'void(*)(const uint32_t & )」不能先用‘::’,因爲它沒有成員boost :: bind無法綁定到純虛擬基類中定義的非靜態函數模板成員類型
我的代碼看起來是這樣的:
template<typename T>
using RunStep = void (*)(const T& steps);
template<typename StepType, typename T>
class Stepper
{
public:
virtual void StepUp() = 0;
protected:
RunStep<StepType> runStepCallBack;
T data;
}
class StepperIO : public Stepper<uint32_t, std::string>
{
virtual void StepUp()
{
boost::bind(runStepCallBack,this, _1); //
}
}
它甚至有可能?它只是一個僞代碼
你想要綁定一個變量嗎? 'runStepCallBack'不是一個函數! –
@TheQuantumPhysicist'runStepCallBack'是'RunStep'類型的成員,它是一個函數指針,所以你可以在其上使用'bind'。 –
Holt
@NulledPointer最後解釋你想要什麼 - 你將如何使用'boost :: bind'的結果?完全不清楚你想在這裏做什麼......'runStepCallBack'是一個指向一個函數的指針,它需要一個'uint32_t',並且你試圖用''StepperIO *''類型'this'來綁定它。 – Holt