首页 > 解决方案 > 调用指向其他类中的成员函数的指针时编译错误

问题描述

我在“Ah”中创建了一个 A 类,它有一个公共函数 func(int)

class A {
   public:
   A();
   int func(int val);
   ...
}

并且“Bh”中的类 B 具有类 A 作为成员和指向上述函数的指针的 typedef。

class B {
   typedef int (A::*m_func)(int);
public:
   B();
   private:
   A      myA;
   m_func _ptrFunc;
   ...
}

在 B.cpp 中将 A 类中的一个函数分配给 B 的成员函数

_ptrFunc = &myA.func

但是当我尝试像这样将参数传递给 _ptrFunc

if(_ptrFunc) {
   y = (this->*_ptrFunc)(x)
   ...
}

我得到以下错误

错误:指向成员类型“int (A::)(int)”的指针与对象类型“A”不兼容 y = (this->*_ptrFunc)(x);

访问指向其他类的函数指针的正确方法是什么?

标签: c++function-pointers

解决方案


推荐阅读