【发布时间】: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->Metric = &CTesting::ExTimeofWork; -
@πάνταῥεῖ 应该是答案
-
@πάνταῥεῖ D:\Job\Acronis\TestProblem\EmulationOfDisk\Emulate\CTesting.cpp:5:ошибка:未定义对“CTesting::ExTimeofWork()”的引用
-
@hedgehogues 好吧,您需要为该函数提供一个定义,请参阅here please。
标签: c++ class pointers methods