gpt4 book ai didi

c++ - 将 ‘const CMyclass’ 作为 ... 的 ‘this’ 参数传递会丢弃限定符 [-fpermissive]

转载 作者:太空狗 更新时间:2023-10-29 23:39:51 30 4
gpt4 key购买 nike

通过

编译以下代码
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

最佳答案

由于您按值取值,my_class 变为 const 限定。您可以通过三个选项来修复它:

  1. const 添加到您的方法中:

    void my_method(const state_type &x, const double t) const
  2. 通过引用捕获:

    [&](const state_type &x, const double t) { .. }
  3. 或者使 lambda 可变:

    [=](const state_type &x,const double t) mutable { .. }

关于c++ - 将 ‘const CMyclass’ 作为 ... 的 ‘this’ 参数传递会丢弃限定符 [-fpermissive],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27584128/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com