方法上的指针
Pointer on method
在我的类中,我尝试使用指向方法的指针。在我的例子中,有一些方法具有类似的签名。它们是公共方法。
指针名为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;
相关文章:
- 在C#中处理C++指针而不使用unsafe的最佳方法
- C++优先级队列,按对象的唯一指针的特定方法升序排列
- 对于C++中使用智能指针的指针算术限制,有没有一种变通方法
- 有没有一种"cleaner"的方法可以在指向基的指针向量中找到派生类的第一个实例?
- 在c++中为我自己的基于指针的数组分配内存的正确方法
- 将成员函数指针作为参数传递给模板方法
- 通过函数指针定义类范围之外的方法
- 模板方法访问正向声明的类仅在没有此指针的情况下无法编译
- 如何访问由共享指针保存的类方法?
- 初始化指向类实例的智能指针并访问其方法
- 我无法使用C++指针指向类方法返回的 std::vector
- 如何在工厂方法中返回指向基于基础操作系统的派生类的有效指针
- 有没有将变量名称转换为双指针的简短方法?
- 在自定义 std::vector-like 容器中处理指针和非指针模板类型的最佳方法是什么?
- 如何在成为指向基类的指针后保留对子类方法的使用?
- 从纯虚拟类 (A) 派生的指针无法访问来自纯类 (B) 的重载方法
- 类指针方法崩溃程序
- 证明两指针方法有效(对和)
- Qt 删除指针方法
- 我如何将一些类的指针方法转换为指针函数