непонятки с указателями на объекты
От: Аноним  
Дата: 27.12.12 15:02
Оценка:
в отдельном 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) ссылается на те поля в памяти, которые заняты другим "не родным объектом".
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.