小编Can*_*dfd的帖子

如何创建<id,成员函数>的映射?

我有以下代码在其中创建指向成员函数的指针的映射。

class A {
 public:
  A() {
    m[0] = &A::F1;
    m[1] = &A::F2;
  }
  void F1(int v) { ... }
  void F2(int v) { ... }
  void O(int i, int v) {
     (*m[i])(v);
  }
 private:
  using func = void(A::*)(int);
  std::map<int, func> m;
};
Run Code Online (Sandbox Code Playgroud)

但是“ O”中存在编译错误。以我的理解,“ m [i]”是指向成员函数的指针,(* m [i])取消引用它,并应调用相应的成员函数。但这行不通。

  • 您能帮忙解释一下吗?
  • 还有其他巧妙的方法来创建成员函数图吗?

c++

2
推荐指数
1
解决办法
61
查看次数

标签 统计

c++ ×1