Per una classe, desidero memorizzare alcuni puntatori di funzioni alle funzioni membro della stessa classe in uno map
memorizzando oggetti std::function
. Ma non riesco proprio all'inizio con questo codice:Utilizzo di oggetti generici std :: function con funzioni membro in una classe
class Foo {
public:
void doSomething() {}
void bindFunction() {
// ERROR
std::function<void(void)> f = &Foo::doSomething;
}
};
ricevo error C2064: term does not evaluate to a function taking 0 arguments
in xxcallobj
combinato con alcuni errori istanziazione di template strani. Attualmente sto lavorando su Windows 8 con Visual Studio 2010/2011 e su Win 7 con VS10. L'errore deve essere basato su alcune strane regole C++ che non seguo.
MODIFICA: lo faccio NON aumento di utilizzo. Questo è C++ 11 integrato nel compilatore MS.
La risposta corretta è utilizzare 'std :: invoke', che non è supportato da MSVC2013. Questa domanda è un po 'datata. – Mikhail