Ich versuche std :: bind und typecast die Funktionsargumente für eine typedef Funktion verwenden. Ich kann jedoch den Std :: Platzhalter nicht eingeben. Irgendwelche Ideen, um zu implementieren, was ich versuche zu tun? Aus verschiedenen Gründen muss ich in der Lage sein, die typedef-Funktion ein uint16_t-Argument zu haben, und auch die init-Funktion akzeptiert eine Member-Funktion, die ein uint8_t-Argument annimmt. Der Code (der Einfachheit halber bearbeitet), die ich verwende:Typ cast std :: Platzhalter
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;
};
Sie können keine bind Ausdruck ('std :: bind' Ergebnis) auf einen Funktionszeiger umwandeln. Schau dir 'std :: function' an. – Simple