1
我想使用std :: bind和typecast函數參數與typedef函數一起使用。但是,我不能強制轉換std ::佔位符。任何想法來實現我想要做的事情?出於各種原因,我需要能夠使typedef函數具有uint16_t參數,並且還需要init函數接受一個採用uint8_t參數的成員函數)。我使用的代碼(編輯爲簡單起見):類型轉換std ::佔位符
typedef void (write_func_t) (uint16_t, uint8_t);
class MyClass {
public:
MyClass();
template < typename T >
void init(void (T::*write_func)(uint8_t, uint8_t), T *instance) {
using namespace std::placeholders;
_write_func = std::bind(write_func, instance, (uint16_t)_1, _2);
this->init();
}
private:
write_func_t *_write_func;
};
您不能轉換綁定表達式('的std :: bind'結果)函數指針。看看'std :: function'。 – Simple