Коллекция коллекций

  • Автор темы DenskiY
  • Дата начала
Статус
Закрыто для дальнейших ответов.
D

DenskiY

Гость
#1
Добрый вечер, участники конференции.
Создаю SDI приложение, использую в нем коллекцию CTypedPtrArray<CObArray, CFigure*> m_FigArray.
В коллекцию записываются геометрические фигуры. Поставлена задача создать коллекцию, в которой будут храниться кадры. (На каждом кадре могут быть свои фигуры) Я вижу ее так:
Код:
typedef CTypedPtrArray<CObArray, CFigure*> CFigArray;
CTypedPtrArray<CObArray, CFigArray*> m_FrameArr;
CFigArray m_FrameArr;
Добавление организую так:
Код:
m_FrameArr.Add(&m_FigArray);
Код:
CFigArray *temp=(CFigArray *)m_FrameArr[0];
CFigure*f;
m_FigArray.RemoveAll();
for (int j=0;j<temp->GetSize();j++)
{
f=(CFigure*)temp->GetAt(j);
m_FigArray.Add(f);
}
В чем может быть ошибка? Можно ли по-другому записать в m_FigArray m_FrameArr[0]?
Спасибо за внимание и ответы.
 

grigsoft

Well-Known Member
15.11.2005
735
0
#2
У тебя m_FrameArr хранит указатели - т.е. копии объектов не создаются. Так что temp==&m_FigArray. Когда ты говоришь m_FigArray.RemoveAll(); temp тоже становится пустой.
 
D

DenskiY

Гость
#3
Суть задачи - поработал с одним кадром (массивом m_FigArray), добавил его в m_FrameArr. Т.е. элементом m_FrameArr будут массивы m_FigArray, в каждом из которых будут свои объекты.
При выводе кадра на экран я пытаюсь в m_FigArray записать m_FrameArr[0]. Проблема в том, что просто присвоить, разыменовав указатель не получается - выводится ошибка. Как сделать это правильно?
 

grigsoft

Well-Known Member
15.11.2005
735
0
#4
Не, указатель на статические объекты не разименовывается. Не совсем понял что тебе надо (что куда записать?), но судя по всему m_FigArray должен создаваться в хипе через new CFigArray(), потом складывается в m_FrameArr, и создается новый объект аналогично. Потом не забыть удалить объекты из массива - MFC этого не сделает.
 
Статус
Закрыто для дальнейших ответов.