【问题标题】:Pointer on method方法指针
【发布时间】:2015-12-06 21:10:46
【问题描述】:

在我的课堂上,我尝试使用指向方法的指针。就我而言,有些方法具有相似的签名。它们是公共方法。

指针称为Metric。

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

D:\Job\Acronis\TestProblem\EmulationOfDisk\Emulate\CTesting.cpp:5: ошибка:无法将 'std::vector (CTesting::)()' 转换为 'std::vector ()()' 在赋值 this->Metric = &this->ExTimeofWork;

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

如果我在课外做同样的构造,它会起作用。

请您解释一下,为什么会出现这个错误?我该如何解决?

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;
}

【问题讨论】:

  • 应该是this-&gt;Metric = &amp;CTesting::ExTimeofWork;
  • @πάνταῥεῖ 应该是答案
  • @πάνταῥεῖ D:\Job\Acronis\TestProblem\EmulationOfDisk\Emulate\CTesting.cpp:5:ошибка:未定义对“CTesting::ExTimeofWork()”的引用
  • @hedgehogues 好吧,您需要为该函数提供一个定义,请参阅here please

标签: c++ class pointers methods


【解决方案1】:

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

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

    public:
        vector<double> ExTimeofWork();
        void Execute();
};

void CTesting::Execute()
{
    this->Metric = &CTesting::ExTimeofWork;//Ошибка!!!!!!!!!!!!!!!!!!!!
    //... Code

    //...
    return;
}

【讨论】:

  • 我有一个问题:ошибка: undefined reference to `CTesting::ExTimeofWork()'
【解决方案2】:

也尝试一下: this->Metric = &ExTimeofWork;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-07
    • 1970-01-01
    • 2010-12-05
    • 2011-03-20
    • 1970-01-01
    • 1970-01-01
    • 2010-09-14
    相关资源
    最近更新 更多