方法上的指针

Pointer on method

本文关键字:指针 方法      更新时间:2023-10-16

在我的类中,我尝试使用指向方法的指针。在我的例子中,有一些方法具有类似的签名。它们是公共方法。

指针名为Metric。

编译器在标记行上报告错误:

D: 工作的Acronis TestProblem EmulationOfDisk 模拟 CTesting.cpp: 5:ошибка:无法将'std::vector (CTesting::)()'转换为'std::vector '()()' in assign this->Metric = &this->ExTimeofWork;

我认为是命名空间的问题。我试图用调用方法指向"CTesting::"附近。我无法修复这个错误。

如果我在课外做同样的构造,它也能工作。

你能解释一下为什么会出现这个bug吗?我怎么修理它?

class CTesting
{
    private:
        //code      
        vector<double> ( *Metric)();
    public:

        vector<double> ExTimeofWork();
        vector<double> ExTimeGenerationToAccept();
        vector<double> ExTimePoolToAccept();
        vector<double> ExMaxTimeGenerationToAccept();
        vector<double> ExMaxTimePoolToAccept();
        vector<double> GetTimeGenerationToAccept();
        vector<double> GetTimePoolToAccept();
        vector<double> GetTimeofWork();
};
void CTesting::Execute()
{
    this->Metric = &this->ExTimeofWork;//Ошибка!!!!!!!!!!!!!!!!!!!!
    //... Code
    //...
    return;
}

您需要将Metric声明为指向成员函数的指针:

class CTesting
{
    private:
        //code      
        vector<double> ( CTesting::*Metric)();
    public:
        vector<double> ExTimeofWork();
        void Execute();
};
void CTesting::Execute()
{
    this->Metric = &CTesting::ExTimeofWork;//Ошибка!!!!!!!!!!!!!!!!!!!!
    //... Code
    //...
    return;
}

还可以试试:this->Metric = &ExTimeofWork;