我有一个Test
具有特殊数据结构的类。类的成员Test
是 a std::map
,其中键是 a std::string
,映射值 astruct
定义如下:
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;
}
提前致谢, 吉尔