类成员的正确语法函数指针列表是啥?

Posted

技术标签:

【中文标题】类成员的正确语法函数指针列表是啥?【英文标题】:what is the correct syntax function pointer list with class member?类成员的正确语法函数指针列表是什么? 【发布时间】:2021-12-19 10:33:13 【问题描述】:

我有一个函数指针列表,非类成员编译没有错误,但类成员编译有错误:

错误:初始化时无法将 'void (CVdmConfig::)()' 转换为 'fp aka void ()()'

CVdmConfig::writeConfig 是一个空函数。

typedef void (*fp)();
fp  fpList[] = &valvesCalib,&CVdmConfig::writeConfig ;

我做错了什么? 最好的祝福 维尔纳

【问题讨论】:

【参考方案1】:

没有看到你的其余代码,我可以调试的东西不多,但这里有一个有效的例子:

#include <iostream>

using namespace std;

void valvesCalib() 
    cout << "inside function\n";


class CVdmConfig 
    public:
        static void writeConfig() 
            cout << "inside method\n";
        
;

typedef void (*fp)();
fp fpList[] = 
    &valvesCalib,
    &CVdmConfig::writeConfig
;

int main()

    for (auto f: fpList) 
        f();
    

    return 0;


/*
Output:
    inside function
    inside method


    Program finished with exit code 0
*/

【讨论】:

【参考方案2】:

问题是成员函数中缺少静态定义。但这会导致类中变量的其他问题。所以我为此使用了一个包装器。

【讨论】:

正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center。

以上是关于类成员的正确语法函数指针列表是啥?的主要内容,如果未能解决你的问题,请参考以下文章

访问包含在数组中的指向类对象的类成员函数的正确语法是啥?

C++中的this指针是啥意思?

这样做的正确方法是啥?调用指针到指针到指针中的函数?

C++函数指针与成员函数指针

C++ 类成员函数指针的使用方法

为什么通过空指针(NULL)能够正确调用类的部分成员函数