| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > эмитация для WinAPI |
| Автор: cthutq 4.8.2006, 12:42 | ||||
| есть например функция WaitForMultipleObject она просит на вход массив описателей
я хочу создать класс-обертку, которая в конструкторе принимает описатель, а в деструкторе закрывает его
а теперь я хочу подсунуть для WaitForMultipleObject вектор объектов Object но на сколько я понимаю эта функция просто оперирует указателем на начало массива и каждый раз просто разыменовывает указатель. или просто работает как с массивом как можно прозрачно создать вектор таких объектов чтоб WaitForMultipleObject работала с ним как с обычным массивом ? P.S. Тоесть нужен объект-контейнер, который внутри будет хранить массив объектов, а для WinAPI предоставлять массив HANDLE-ов |
| Автор: Daevaorn 4.8.2006, 12:54 | ||
cthutq,
При условии, что выравнивание правильное, если нет, тогда, в принципе, можно ждать сюрпризов. |
| Автор: cthutq 4.8.2006, 13:12 | ||||||
да в том то и дело, что Object может иметь размер > sizeof(HANDLE)
придется постоянно создавать из массива Object массив HANDLE например
|
| Автор: Romikgy 4.8.2006, 15:20 |
зачем? создай тогда класс где будут собиратся все объекты в кучу, и код для чего приведен? |
| Автор: cthutq 4.8.2006, 15:24 |
не совсем понял... |
| Автор: Romikgy 4.8.2006, 15:44 |
| ты проблемку объясни получше , получше и посоветуем на кой надо этот класс с одним хенделом? можно в нем весь массив хенделов хранить |
| Автор: cthutq 4.8.2006, 16:18 | ||
описатель представляет собой SOCKET. Обертка нужна для создания и удаления описателя. Кроме того с этой оберткой удобнее читать и писать в сокет. Есть сервер, который хранит вектор этих объектов (Socket). Есть массив событий, которые ассоциированны с сокетами.
Но сервер использует WinAPI функцию WSAWaitForMultipleEvents, которая хочет массив событий. |
| Автор: Romikgy 4.8.2006, 16:26 |
| терь вопрос где? Добавлено @ 16:29 логичнее всего было бы написать метод сервера с вызовом этой функции (вейта) а в классе сокета, создать метод который отдает указатель на хендл сокета |
| Автор: cthutq 4.8.2006, 16:55 | ||||
он был в самом начале (ну и название темы
а оператор у меня на что в классе Socket
так он и выполняется в методе сервера. Только сервер хранит массив Socket, а не массив SOCKET при этом придется постоянно копировать (тоесть создавать) временный массив SOCKET что очень накладно |
| Автор: Romikgy 4.8.2006, 20:46 |
ты читал это? весь язык си построен на указателях имхо вот это чтоли? дык указатель на него передай а не сам объект |