【发布时间】:2014-12-20 20:38:40
【问题描述】:
通过
编译以下代码g++ -std=c++11 test.cpp
给我以下错误:
test.cpp: In lambda function:
test.cpp:17:128: error: passing ‘const CMyclass’ as ‘this’ argument of ‘void CMyclass::my_method(const state_type&, double)’ discards qualifiers [-fpermissive]
std::function<void(const state_type &,const double)> observer = [=](const state_type &x,const double t){my_class.my_method(x,t);};
^
我已经搜索了其他类似的问题,但我无法弄清楚这段代码有什么问题。
#include <vector>
#include <functional>
typedef std::vector<int> state_type;
class CMyclass
{
public:
void my_method( const state_type &x , const double t )
{
}
};
int main()
{
CMyclass my_class;
std::function<void(const state_type &,const double)> observer =
[=](const state_type &x,const double t)
{
my_class.my_method(x,t);
};
}
编辑:
我不会在方法后面加上const。
【问题讨论】:
标签: c++ compiler-errors function-pointers pass-by-reference lambda