Я создал этот вектор, который имеет буферы:Вектор буферов в C++
std::vector<std::unique_ptr<locked_buffer<std::pair<int, std::vector<std::vector<unsigned char>>>>>> v1;
Затем я заполняю этот вектор с n
буферов и эти буферы имеют aux
элементы. n
- это номер int, который является аргументом. aux
- еще один аргумент, который также является типом int.
for(int i=0; i<n; i++){
v1.push_back(std::unique_ptr<locked_buffer<std::pair<int,std::vector<std::vector<unsigned char>>>>> (new locked_buffer<std::pair<int, std::vector<std::vector<unsigned char>>>>(aux)));
}
Но когда я пытаюсь получить доступ к каждому буферу вектора я не могу, потому что я не получил ясно, как я могу получить доступ к определенному элементу вектора структуры:
v1[0].put(image, false);
ошибка компиляции, что у меня есть следующий один (The put
функция определена на моей структуре пользовательских locked_buffer
):
error: ‘_gnu_cxx::_alloc_traits<std::allocator<std::unique_ptr<locked_buffer<std::pair<int, std::vector<std::vector<unsigned char> > > > > > >::value_type {aka class std::unique_ptr<locked_buffer<std::pair<int, std::vector<std::vector<unsigned char> > > > >}’ has no member named ‘put’
v1[i].put(image, false);
Спасибо.
Я думаю, что вам нужно разыменовать 'unique_ptr', так что' v1 [I ] -> put ... ' – yassin
- что двойной вектор в конце должен быть 2d-матрицей? Кроме того, это будет отличное место для использования 'using'. Например, 'template с использованием myBufferType = std :: pair >>;', а затем ваш тип: 'std :: unique_ptr >>' –
RyanP