我有一个包含函数指针的向量:
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),但是我没有相关地转换迭代器,所以我可以提供参数。
我该怎么做?
非常感谢
答案 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
。