在给定类中创建函数指针的向量,而函数是另一个类的成员

c++ Creating vector of function pointers in a given class, with function being a member of a different class

本文关键字:函数 成员 另一个 向量 指针 创建      更新时间:2023-10-16

我在一个类中有一个函数指针向量,我想在其他一些类中传递函数的地址。下面的实现给出了错误。正确的方法是什么?

class A
{
public:
 void func ()
 {
 }
};
class B
{
public:
 std::vector<void(*)()) myVec;
 void update_func()
 {
  myVec.push_back(&A::func);
 } 
};
int main()
{
 B* b = new B;
 b->update_func();
 return 0;
}

指向非静态成员函数A::func的指针的类型不是void(*)(void),而是void(A::*)(void)。因此,要么更改vector以匹配您希望它具有的元素,要么使用指向vector正确类型的函数的指针。

A的func()必须是静态的,以匹配函数指针的声明。同时,它需要是public,以便B类可以访问。B中的update_func()也需要是公共的,否则在main中它是不可访问的。vector声明有打字错误,必须是vector<>,而不是vector<)

//

class A
{
  public:
   static void func ()
   {
   }
};
class B
{
 std::vector<void(*)()> myVec;
 public void update_func()
 {
  myVec.push_back(&A::func);
 } 
};
int main()
{
 B* b = new B;
 b->update_func();
 return 0;
}

这段代码有很多问题。首先b->函数应该有()后,如果你想调用该函数。第二. .什么是void update function ()..还有糟糕的代码…第三,你不能使用这些函数,因为它们是私有的…但是你要把它正确地放入向量中