【问题标题】: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} ;

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

【问题讨论】:

    标签: member-function-pointers


    【解决方案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
      猜你喜欢
      • 1970-01-01
      • 2022-06-14
      • 1970-01-01
      • 1970-01-01
      • 2016-12-27
      • 2023-03-23
      • 2011-04-12
      • 1970-01-01
      • 2014-05-05
      相关资源
      最近更新 更多