使用存储在vector中的函数指针

use function pointer stored in vector

本文关键字:函数 指针 vector 存储      更新时间:2023-10-16

我有一个包含函数指针的向量:

vector<double (*)(vector<double>)> dY = {d2x,d2y,dx,dy}

在另一个函数中,我有一个for循环遍历这个向量。

for( vector<double>::const_iterator it = dY.begin(); it != dY.end(); ++it){
    vector<double> Y = {0,10,0,10};
    ...
}

现在我想计算d2x(Y),d2y(Y),dx(Y)和dy(Y),但我没有正确地强制转换迭代器,所以我可以提供参数。

我该怎么做?

Thanks to lot

你真的在正确的向量上迭代吗?循环中it的类型不适合dY向量

for( vector<double (*)(vector<double>)>::const_iterator it = dY.begin(); it != dY.end(); ++it)
//          ^^^^^^^^^^^^^^^^^^^^^^^^^ -- You need the correct type here

一旦你有了正确的迭代器,这应该可以工作:

double result = (*it)(Y);

不需要强制转换,只需对迭代器解引用即可获得函数指针:

double d = (*it)(Y);

然而,你声明了错误的迭代器类型;应该是

vector<double (*)(vector<double>)>::const_iterator

由于您使用的是c++ 11,如果您喜欢,可以将其缩短为auto