Przypisanie statycznej funkcji z argumentami do std::function

Przypisanie statycznej funkcji z argumentami do std::function
Kamil9132
  • Rejestracja:prawie 14 lat
  • Ostatnio:prawie 4 lata
  • Postów:173
0

Witam.
Czy jest możliwe przypisanie statycznej funkcji z argumentami do std::function?
Próbowałem zrobić to w poniższy sposób jednak, przy próbie kompilacji pojawia się błąd.

Kopiuj
std::function<std::string()> webRequest = std::bind(&WebRequest::MakeRequest, siteAddress, getParameters);
Kopiuj
Error	C2440	'return': cannot convert from 'std::_Unforced' to 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>'	...\Microsoft Visual Studio 14.0\VC\include\type_traits	1441	

Prostym obejściem problemu jest stworzenie lambdy wywołującej powyższą metodę, jednak nie wydaje mi się to najlepszym rozwiązaniem:

Kopiuj
std::function<std::string()> webRequestLambda = [this, &getParameters]()
{
	return WebRequest::MakeRequest(siteAddress, getParameters);
};

WebRequest.h

Kopiuj
static std::string WebRequest::MakeRequest(std::string url, const std::vector<std::array<std::string, 2>>& getParameters = {}, const std::vector<std::array<std::string, 2>>& postParameters = {}, const std::vector<std::array<std::string, 2>>& headers = {}, const std::string& cookiesToSend = "", std::string* receivedCookies = NULL);

Środowisko: Microsoft Visual Studio 2015 Community.

L0
  • Rejestracja:ponad 13 lat
  • Ostatnio:ponad 2 lata
2

ta funkcja przyjmuje 6 argumentów, a nie 2. std::bind nic nie wie o domyślnych wartościach dla argumentów.

edytowany 1x, ostatnio: ly000
Kamil9132
  • Rejestracja:prawie 14 lat
  • Ostatnio:prawie 4 lata
  • Postów:173
0

Dziękuję za pomoc.
W takim razie lambda wydaje się najbardziej sensowna.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.