У меня есть класс Test
со своеобразной структурой данных.
Членом класса Test
является std::map
, где ключом является std::string
, а отображаемым значением является struct
, определяемое следующим образом:
typedef struct {
void (Test::*f) (void) const;
} pmf_t;
Инициализация карты в порядке. Проблема в том, когда я пытаюсь вызвать указанную функцию. Я сделал игрушечный пример, воспроизводящий проблему. Вот оно:
#include <iostream>
#include <map>
using namespace std;
class Test;
typedef void (Test::*F) (void) const;
typedef struct {
F f;
} pmf_t;
class Test
{
public:
Test () {
pmf_t pmf = {
&Test::Func
};
m["key"] = pmf;
}
void Func (void) const {
cout << "test" << endl;
}
void CallFunc (void) {
std::map<std::string, pmf_t>::iterator it = m.begin ();
((*it).second.*f) (); // offending line
}
std::map<std::string, pmf_t> m;
};
int main ()
{
Test t;
t.CallFunc ();
return 0;
}
Спасибо заранее,
Jir