Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как создать копию содержимого дескриптора? 
:(
    Опции темы
Влд
Дата 11.8.2005, 16:35 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Всем привет! Иногда встречаются довольно нудные задачи, когда надо, например, сделать несколько абсолютно одинаковых объектов. Для простых объектов, например структур, можно использовать такое решение:
Код

struct MySt
    {
        char str[20];
        int count;

    } mst01, mst02;

mst01.count=10;
strcpy(mst01.str, "Hello");
memcpy(&mst02, &mst01, sizeof(MySt)); 


Но вот недавно пришлось писать окно, на котором располагается несколько элементов управления, причем практически одинаковых – например, четыре панели инструментов в одном окне, которые отличаются только только своим расположением и массивом кнопок. И возникла мысль: - а нельзя ли, подобно описанному выше примеру быстрого создания объектов-клонов, создавать объекты, имея «на руках» их дескриптор. То есть я создаю, например, панель инструментов, получаю ее дескриптор, а затем создаю несколько пустых дескрипторов, а через какую-нибудь операцию клонирования «по дескриптору» наполняю эти дескрипторы содержимым.
Погулял тут по инету, хотел узнать немного больше, что-же такое дескриптор. Мнения неоднозначные: новичкам рекомендуется рассматривать его как простое число- идентификатор, а продвинутым как описатель-указатель (извините за каламбур). Короче, как я понял, через дескриптор можно получить всю информацию об объекте. А раз так, наверное можно через дескриптор вытащить и адрес/размер объекта для копирования….


  Вверх
_hunter
Дата 11.8.2005, 16:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 16
Всего: 98



а зачем так хитро? проще прописать конструктор, принимающий указатель на объект, и в нем копировать. ( можно еще мапу сделать для связи HWND и указателя )


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
JoyEx
Дата 12.8.2005, 12:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дядя
**


Профиль
Группа: Участник
Сообщений: 323
Регистрация: 21.6.2005
Где: Москва, РФ

Репутация: нет
Всего: 12



HANDLE для того и придуманы, чтобы в user-mode никто не работал напрямую (через указатели) с объектами


--------------------
Если ты уже никого не боишься, значит ты самый страшный 
PM IM ICQ AOL YIM MSN   Вверх
Denn
Дата 12.8.2005, 12:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 143
Регистрация: 6.8.2005

Репутация: нет
Всего: 2



Задача похожа на паттерн прототип. А вообще она не кажется настолько общей. Думаю можно инкапсулировать понятие дескриптора в объекте, например, сделать что-то наподобие функтора. Этот объект будет решать как и что клонировать из исходного объекта.
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0614 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.