Допустим, у меня есть структура "A" с четырьмя членами там.Четыре члена названы:
У меня также естьструктура "B" с пятью членами там.Четыре из пяти членов происходят из структуры A. Затем у меня есть вектор с указателями структуры B.Я добавляю каждую созданную структуру B к этому вектору.
Это выглядит так:
std :: vector <B *> vec;
for (A& a : input.buffer())
{
B b =
{
a.one, a.two, a.three, a.four, random value
};
vec.push_back (& b);
}
function_which_needs_a_const_pointer_to_the_first_element_and_size_of_vector (vec.front (), vec.size ());
Теперь я использовал число std :: cout в разных точках кода.Я печатаю следующие значения:
a.one = 1304505
b.one (just before the push_back) = 1304505
vec [0] -> one (after the push_back) = 24050434
Таким образом, как вы можете видеть, меня беспокоят значения, которые меняются после добавления в вектор, в результате чего остальная часть кода больше не может работать правильно,У кого-нибудь есть идеи, как мне это решить?Я, вероятно, делаю что-то глупое.
Я уже два дня пробовал Google, но, похоже, ничего не помогло.
Благодаря некоторым вашим комментариям теперь я знаю, что есть свисающие указатели.Если я сделаю его вектором общих указателей вместо необработанных указателей, я получу недопустимое преобразование из общего указателя в ошибку константного необработанного указателя.Итак, теперь мы знаем проблему.Но как лучше это исправить?Потому что мне не разрешено касаться этого константного необработанного указателя в этой функции.
Прежде чем вы все нажмете кнопку голосования вниз;Никто из вас все еще не может дать мне правильное решение.