Срок действия элементов, которые вы помещаете в базу данных, истекает. Они уничтожаются, когда вы покидаете {}
, в котором они были созданы, и поэтому ссылка на них больше не действительна.
Вам нужно изменить его с vector<MyStruct>
на vector<MyStruct*>
(желательно с использованием безопасных указателей из Boost :: вместо указателей, но вы поняли идею).
Вы создаете элемент в пределах (ограниченной) области и помещаете его в вектор (пока копируется struct , строки в нем , а не !), А затем используются повторно та же самая ячейка памяти (скорее всего, если она правильно оптимизирована) для хранения следующей «новой» структуры, и той, что после, и так далее, и так далее.
Вместо этого в пределах ограниченной области создайте MyStruct *myObject = new MyStruct
и назначьте его значения, затем нажмите указатель на вектор.
Не забудьте delete
все значения из вектора перед его очисткой / уничтожением !!
Или, конечно, вы могли бы использовать std :: string / CString / what вместо массива char и полностью избежать этой проблемы, имея структуру для безопасного копирования.