为什么变量被编译器声明为const?-灵析社区

PunkMaccccc

变量被编译器声明为const,导致无法编译 #include #include class Widget { public: void addFilter() const; private: int divisor; using FilterContainer = std::vector>; FilterContainer filters; }; void Widget::addFilter() const { filters.emplace_back( [=](int value) { return value % divisor == 0; } ); } int main() { ; } ![3cfb0110448c37089ccff8e55b40621.png](https://wmprod.oss-cn-shanghai.aliyuncs.com/c/user/20241010/6ddb0b04dc96388867477bc82a85e4f7.png)

阅读量:135

点赞量:0

问AI
今天吃什么你说吧
void Widget::addFilter() const // ^^^^^ { filters.emplace_back( [=](int value) { return value % divisor == 0; } ); } 这个自己声明的 const 。 这个 const 导致 this 变成 const,从而所有的成员都是 const ,比如里面的 filters (它其实是 this->filters)