Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Не врубаюсь до конца в CArray  (Прочитано 6616 раз)
0 Пользователей и 1 Гость смотрят эту тему.
ezus
Опытный

il
Offline Offline

« : 03-05-2010 14:16 » 

Помогите разобраться, пожалуйста.

Имею следующее описание:
Код:
    struct ZDRItem
   {
        long   _itemId;
       double _mtbf;

        ZDRItem()
        {
              _itemId = 0;
              _mtbf    = 0.;
        }
    };

    class ZItems : public CArray<ZDRItem, ZDRItem&>
   {
   } _items;


ZDRItem - обычная структура, мне надо создать массив этих структур.

Вопос: Какие отношение между элеменом массива ZDRItem и аргументом  ZDRItem&?

В смысле
Код:
ZDRItem  item = items.GetAt(i);
- означает простое копирование содержимого?

А
Код:
items.Add(item );
 items.SetAt(ii, item );
- тоже  означает простое копирование содержимого?

Т.е. следующий код будет корректным?
Код:
ZDRItem item;

item.itemId = 2;
 items.Add(item );

item.itemId = 3;
 items.Add(item );
 

Спасибо.

Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #1 : 03-05-2010 14:57 » 

ezus, а в отладчике нельзя что-ли посмотреть ? Улыбаюсь Хотя, на первый взгляд - просто побайтовое копирование. Так как оператор = не переопределён
Записан

ezus
Опытный

il
Offline Offline

« Ответ #2 : 03-05-2010 15:09 » 

а в отладчике нельзя что-ли посмотреть ? Улыбаюсь
К сожалению на данный момент - нет.
Цитата
Хотя, на первый взгляд - просто побайтовое копирование. Так как оператор = не переопределён
Или через копи-конструкрор?

Ясно и спасибо.
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #3 : 04-05-2010 03:11 » 

Цитата
Или через копи-конструкрор?
насколько я знаю,

Код:
type t;

type T1(t);//вызовется T()
type T2=t;//вызовется T()

type T3;
T3=t;//вызовется operator =()

а вообще, самое простое поставить точку останова и шагнуть унутрь Улыбаюсь Когда будет возможно - попробуй Улыбаюсь
Записан

Антон (LogRus)
Глобальный модератор

ru
Offline Offline
Пол: Мужской
Внимание! Люблю сахар в кубиках!


WWW
« Ответ #4 : 05-05-2010 03:06 » 

по пунктам:
1. да - простое копирование
2.1. добавление элемента в конец (создаётся копия)
2.2. изменяется элемент ii
3. вполне
и обо всём этом написано в документации http://msdn.microsoft.com/en-US/library/7y7b8fx3%28v=VS.80%29.aspx

зачем такой изврат?
Код:
   class ZItems : public CArray<ZDRItem, ZDRItem&>
   {
   } _items;
почему не
Код:
typedef CArray<ZDRItem, ZDRItem&> ZItems;
Записан

Странно всё это....
ezus
Опытный

il
Offline Offline

« Ответ #5 : 06-05-2010 08:16 » 

почему не
Код:
typedef CArray<ZDRItem, ZDRItem&> ZItems;
Да, очень просто - лень и тупость - моя, естественно Улыбаюсь
Там был копи-паст из чужего кода. Текст меня удивил, озадачил, но не сподвиг на поиски истины.

ОХРОМНОЕ Спасибо
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines