使用存储在向量中的函数指针

时间:2013-01-15 16:24:27

标签: c++ pointers casting

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

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),但是我没有相关地转换迭代器,所以我可以提供参数。

我该怎么做?

非常感谢

2 个答案:

答案 0 :(得分:5)

你真的迭代正确的向量吗?循环中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);

答案 1 :(得分:2)

不需要强制转换,只需取消引用迭代器以获取函数指针:

double d = (*it)(Y);

但是,你已经声明了错误的迭代器类型;它应该是

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

由于您使用的是C ++ 11,如果愿意,可以将其缩短为auto