Относительно получаемой ошибки:
... у объекта есть квалификаторы типа , которые препятствуют совпадению - типы аргументов: (int) - тип объекта: const std :: vector.
Сначала проверьте правильность введенного вами кода - вы утверждаетеэто неконстантная ошибка, но в ней явно указано иное, хотя вы можете передать ее в функцию как константную ссылку - это одна из возможностей.
В любом случае вы не можете push_back
в const vector
, так как это, ну, const
: -)
Это можно увидеть с помощью следующего кода:
#include <vector>
int main() { XYZZY std::vector<int> x; x.push_back(42); }
Когда вы компилируете с -DXYZZY=
(такXYZZY
фактически исчезает), все компилируется нормально.Однако, с -DXYZZY=const
вы получите ошибку:
qq.cpp: In function ‘int main()’:
qq.cpp:2:54: error: passing ‘const std::vector<int>’ as ‘this’
argument discards qualifiers [-fpermissive]
int main() { XYZZY std::vector<int> x; x.push_back(42); }
^