【发布时间】:2020-10-02 19:13:49
【问题描述】:
我有这个错误
error: cannot convert ‘<lambda(double)>’ to ‘double (*)(double)’
来自代码
void Matrice::mapEmplace(double (*fct)(double))
{
for (size_t i = 1; i <= nLig; ++i)
for (size_t j = 1; j <= nCol; ++j)
(*this)(i, j) = (*fct)((*this)(i, j));
}
--
void function()
{
// ...
bool alea = something;
// alea results on reading in a file
utilisation.mapEmplace(
[alea](double x) -> double {
return alea ? 1 : 0;
}
);
//....
}
例如,当我没有通过将alea 声明为全局来捕获它时,它可以工作。但是当我在函数 g++ 的范围内声明 alea 时,会显示此错误。
您知道问题出在哪里以及如何通过将alea 保留在我的函数中来解决它吗?
【问题讨论】:
标签: c++ c++11 lambda function-pointers member-functions