1. Набираем команду codeby webinar. Набираем команду для организации и проведения вебинаров. Подробнее ...

    Скрыть объявление
  2. Требуются разработчики и тестеры для проекта codebyOS. Требования для участия в проекте: Знание принципов работы ОС на базе Linux; Знание Bash; Крайне желательное знание CPP, Python, Lua; Навыки системного администрирования. Подробнее ...

    Скрыть объявление
  3. Получи 30.000 рублей. Для получения денег необходимо принять участие в конкурсе авторов codeby. С условиями и призами можно ознакомиться на этой странице ...

    Внимание! Регистрация авторов на конкурс закрыта.

    Скрыть объявление

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

Тема в разделе "С и С++", создана пользователем DenskiY, 19 окт 2007.

Статус темы:
Закрыта.
  1. DenskiY

    DenskiY Гость

    Репутация:
    0
    Добрый вечер, участники конференции.
    Создаю 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]?
    Спасибо за внимание и ответы.
     
  2. grigsoft

    grigsoft Well-Known Member

    Репутация:
    0
    Регистрация:
    15 ноя 2005
    Сообщения:
    735
    Симпатии:
    0
    У тебя m_FrameArr хранит указатели - т.е. копии объектов не создаются. Так что temp==&m_FigArray. Когда ты говоришь m_FigArray.RemoveAll(); temp тоже становится пустой.
     
  3. DenskiY

    DenskiY Гость

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

    grigsoft Well-Known Member

    Репутация:
    0
    Регистрация:
    15 ноя 2005
    Сообщения:
    735
    Симпатии:
    0
    Не, указатель на статические объекты не разименовывается. Не совсем понял что тебе надо (что куда записать?), но судя по всему m_FigArray должен создаваться в хипе через new CFigArray(), потом складывается в m_FrameArr, и создается новый объект аналогично. Потом не забыть удалить объекты из массива - MFC этого не сделает.
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей