Если вам не нужно изменять vector<void*> foo
, тогда вы можете просто работать с базовыми данными, изменив сигнатуру своей функции на: void SetDataReferences(MyStruct*const* pVector, const size_t length)
(помните, что const
остается ассоциативным, так что это указатель-to-constant-pointers-to-MyStructs.) Это можно вызвать следующим образом:
SetDataReferences(reinterpret_cast<MyStruct*const*>(data(foo)), size(foo))
Если вам нужно изменить элементы vector<void*> foo
(не размер), у вас все еще есть обращение кизменение сигнатуры функции на: void SetDataReferences(MyStruct** pVector, const size_t length)
Это можно вызвать следующим образом:
SetDataReferences(reinterpret_cast<int**>(data(foo)), size(foo))
Live Примеры
Если вам нужно изменитьvector<void*> foo
, что усложняется, вам нужно будет принять vector<void*>
, как это делает сигнатура вашей функции в вопросе, и использовать элементы, а не как группу.