Vorrei creare una mappa con i tasti che sono un nome di funzione come una stringa e il valore è la funzione stessa. Quindi qualcosa del genere ...Mappa C++ delle funzioni di cmath
#include <cmath>
#include <functional>
#include <map>
#include <string>
typedef std::function<double(double)> mathFunc;
int main() {
std::map< std::string, mathFunc > funcMap;
funcMap.insert(std::make_pair("sqrt", std::sqrt));
double sqrt2 = (funcMap.at("sqrt"))(2.0);
return 0;
}
verrebbe utilizzato per chiamare la funzione sqrt su qualche valore di input. Quindi, naturalmente, è possibile aggiungere altre funzioni alla mappa come sin, cos, tan, acos, ecc. E basta chiamarle con qualche stringa di input. Il mio problema è quello di ciò che il tipo di valore dovrebbe essere nella mappa, entrambi i puntatori a funzione e std :: funzione di dare il seguente errore sulla linea di std :: make_pair
error: no matching function for call to 'make_pair(const char [5], <unresolved overloaded function type>)'
Così che cosa dovrebbe essere il mio tipo di valore per essere costruito in funzioni come std :: sqrt?
Grazie
Sono sovraccarichi. Come può sapere quale usare? – chris
Sicuramente posso specificare che la firma dovrebbe essere doppia (doppia) in qualche modo? Anche fare std :: make_pair dà lo stesso errore. Immagino tu intenda come ci siano 4 tipi diversi, come da http://www.cplusplus.com/reference/cmath/sqrt/? –
È possibile trasmettere la funzione. – chris