首页 > 解决方案 > 将函数指针指向成员方法

问题描述

我有 2 类 ClassA 和 ClassB 如下所示。如何在将指针传递给 ClassA 的方法的 classB 的构造函数中初始化 classA 对象?

非常感谢!!

typedef int (*doWork)(int, int);

int GlobalAdd(int a, int b) {
    return a + b;
}

class ClassA {
public:
    ClassA(doWork){}
};

class ClassB 
{
    bool mIsBlocked = false;

public:
    ClassB() {
        ClassA A1(GlobalAdd); // OK
        ClassA A2(&ClassB::MemberAdd); // error C2664: 'ClassA::ClassA(ClassA &&)': cannot convert argument 1 from 'int (__thiscall ClassB::* )(int,int)' to 'doWork'
    }

    int MemberAdd(int a, int b)
    {
        if(mIsBlocked)
            return a + b;
        return -1;
    }
};

标签: c++member-function-pointers

解决方案


推荐阅读