【发布时间】:2017-06-06 09:52:54
【问题描述】:
#include <vector>
void main() {
std::vector<int> test[2];
auto funct = [test](){ test[0].push_back(1); };
funct();
}
结果我得到了
main.cc:5:45: 错误:将 'const std::vector' 作为 'void std::vector<_tp _alloc>::push_back(std::vector<_tp _alloc>::value_type&&) [with _Tp = int; _Alloc = std::allocator; std::vector<_tp _alloc>::value_type = int]' 丢弃限定符 [-fpermissive] 自动功能=测试{测试[0].push_back(1); };
如何捕获test 指针而不使其值const?除了将其设为vector<vector<int>> 之外,还有其他方法吗?为什么它甚至变成了一个常量?
【问题讨论】:
-
还有一点不是直接重复:
test不是指针。这是一个数组。数组衰减为指针的情况有很多,但这不是其中之一(并且您的数组是按值复制的)。