【发布时间】:2019-04-18 16:09:27
【问题描述】:
编辑:抱歉,我在没有了解参考资料的情况下问了这个问题...
当我运行这段代码时,我似乎遇到了这个错误......
错误:从 'main()::' 类型的右值对 'std::function&' 类型的非常量引用的初始化无效
#include <bits/stdc++.h>
using namespace std ;
void printfunction(bool a, function <void()> &b)
{
if (a == true)
{
b() ;
}
}
int main()
{
int value = 45 ;
printfunction(true, [value](){cout << "The value is : " << value ;}) ;
}
但是,当我在函数之前添加const 时,错误消失...就像这样:
void printfunction(bool a,const function <void()> &b)
问题是,如果需要,我想更改函数引用中的函数... 有没有其他方法可以做到这一点?请让我知道它是否确实存在。
再见,
塞缪尔
【问题讨论】:
-
C 语法错误,C 标签被移除
-
那你为什么不按值取函数呢?
-
这里有些东西没有意义。如果您更改函数,则无论如何更改都会丢失,因为调用者创建了一个临时函数。所以如果你想改变
printfunction中的函数,那你就错了。您是否希望printfunction获得该函数的私有副本,然后它可以在不影响调用者的情况下对其进行修改?
标签: c++ rvalue lvalue lvalue-to-rvalue