в отдельном h-файле объявлен класс:
class A;
в потоке №2 создаются экземпляры этого класса:
h-файл:
private:
vector1 < A*>;
vector2 < A*>;
vector3 < A*>; // создаем три массива указателей на объекты
public:
vector4 < A*>;
cpp-файл: здесь выполняются операции следующего рода:
vector3.push_back(new A()); // создание объектов
vector2.push_back(vector3.back()); //
vector3.back()=0;
...
vector1[i]=vector2[j];
...
vector4.push_back(vector1[k]);
// после нулевые указатели удаляются из векторов
// содержимое всех векторов активно меняется
здесь первый вопрос: правомерно ли таким образом "передавать объект" из вектора в вектор. идея такая, что нужен доступ к объекту, причем только из одного вектора (значит в двух остальных указателей быть не должно).
далее в GUI-потоке:
объявлен класс:
class B //в конструкторе указатель на класс A
{
public:
B(A* p){
k=p; // получаем доступ к объекту
};
private:
A *k;
}
...
B fm = new B(*thread2->vector4[i]); // так создаем экземпляры класса B
...
второй вопрос: правильно ли таким образом получать доступ к i-му объекту?
компилятор ошибок не дает, программа запускается, но есть ошибки в логике.
такое подозрение, что k(private-член класса B) ссылается на те поля в памяти, которые заняты другим "не родным объектом".