C++ Карта строки и указатель на функцию-член

Привет, поэтому я делаю карту со строкой в ​​качестве ключа и указателем на функцию-член в качестве значения. Я не могу понять, как добавить на карту, это не похоже на работу.

#include <iostream>
#include <map>
using namespace std;

typedef string(Test::*myFunc)(string);
typedef map<string, myFunc> MyMap;


class Test
{
private:
    MyMap myMap;

public:
    Test(void);
    string TestFunc(string input);
};





#include "Test.h"

Test::Test(void)
{
    myMap.insert("test", &TestFunc);
    myMap["test"] = &TestFunc;
}

string Test::TestFunc(string input)
{
}

1 ответ

Решение

Увидеть std::map::insert а также std::map за value_type

myMap.insert(std::map<std::string, myFunc>::value_type("test", &Test::TestFunc));

и для operator[]

myMap["test"] = &Test::TestFunc;

Вы не можете использовать указатель на функцию-член без объекта. Вы можете использовать указатель на функцию-член с типом объекта Test

Test t;
myFunc f = myMap["test"];
std::string s = (t.*f)("Hello, world!");

или с указателем на тип Test

Test *p = new Test();
myFunc f = myMap["test"];
std::string s = (p->*f)("Hello, world!");

См. Также C++ FAQ - Указатели на функции-члены

Другие вопросы по тегам