![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| dgolukas |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 30.8.2009 Репутация: нет Всего: нет |
пишу инстант-мессенджер простенький,
ну там прием отправка сообщений,пока без файлов, смайлов и всяких статусов. и вот встала задача написать протокол. решила реализовать его в виде двух классов данные и сам протокол у которого будет как бы хиддер и тело, состоящее из объекта класса Data застряла на методе createPacket, прям ступор... т.е. лучше енум этот привести в свитче в самом методе или??? и вот еще статические поля можно же только в статических методах вызывать, как бы мне тогда ID пакета запихнуть в криейт. вобщем требуются как воздух ваши идеи и советы, а я уж их как-нибудь пропишу. и вот еще один вопрос, а в этом протоколе реально ли с обычными данными работать или их надо как-то в бинарном виде??? айнидхелп. з.ы. в идеале, ну по кр мере как я представляю себе все это дело, у меня будет еще класс отдельный обработчик событий, класс обработчик сообщений который будет использовать протокол, ну и классы ресиверы и сендеры.
|
||||
|
|||||
| andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 6 Всего: 33 |
что-то вы слишком увлеклись статическими свойствами классов.
допустим, создан один объект класса Packet. все созданные объекты после него, будут содержать свойство _packetID равное значению первому. если конечно в конструкторе что-то не изменяет его.
чтоб этого не делать, ибо не по плюсовому это, заведите базовый класс, и от него создайте потомков, в которых перегрузите нужный вам методы. и статиков поменьше) -------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
| dgolukas |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 30.8.2009 Репутация: нет Всего: нет |
да, со статикой я и правда увлеклась. я вообще долго понять не могла как это писать.хотела сделать счетчик, ну чтобы у каждого пакета был свой номер. а по поводу перечислений, т.е. мне проще завести класс или структуру, где прописать все возможные типы пакетов и методы работы с ними? потом связать классы и передавать просто в методы? з.ы. статика в классе Data,это я думала,что будув хиддер данных передавать из класса user idы отправителя и получателя это разве можно как-то иначе реализовать?? Это сообщение отредактировал(а) dgolukas - 4.1.2010, 00:47 |
|||
|
||||
| andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 6 Всего: 33 |
да, можно и так. там же пропишите енумы. почитайте паттерн Абстрактная фабрика Добавлено через 2 минуты и 24 секунды пример на С++ довольно подробно демонстрирует реализацию. Это сообщение отредактировал(а) andrew_121 - 4.1.2010, 00:58 -------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
| dgolukas |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 30.8.2009 Репутация: нет Всего: нет |
ооо! спасибо огромное! )
|
|||
|
||||
| dgolukas |
|
||||||||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 30.8.2009 Репутация: нет Всего: нет |
от что теперь получилось на выходе (почти на выходе)
осталось разобраться как работает map. вопрос не по STL, а скорее правильно ли я идею написания подхватила? и чем можно заменить собственно использование map'a ??? так лучше или совсем бред???
|
||||||||||
|
|||||||||||
| andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 6 Всего: 33 |
стражи нужно ставить до инклюдов.
это скажи, правильно ли код работает. лень все читать. букав много. принадлежность не указана. -------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
| dgolukas |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 30.8.2009 Репутация: нет Всего: нет |
1) да по стражам исправлю. спасибо 2) код не работает в реализации Packet как-то с map кучу ошибок выдает. мне кажется его лучше чем-нить заменить. 3) спасибо, исправила. проглядела. |
|||
|
||||
| andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 6 Всего: 33 |
Мне догадаться? ;) если у тебя появляются ошибки, это не значит что его нужно чем-то заменять. согласись, полезнее будет понять в чем суть ошибок. -------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
| dgolukas |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 30.8.2009 Репутация: нет Всего: нет |
Packet.h:19: error: conflicting return type specified for ‘virtual Packet& Packet::createPacket(PacketHeader&, PacketData&)’ PacketFactory.h:18: error: overriding ‘virtual void PacketFactory::createPacket(PacketHeader&, PacketData&)’ Packet.cpp: In constructor ‘Packet::Packet()’: Packet.cpp:9: error: ‘PacketCreate’ is not a member of ‘Packet’ Packet.cpp:9: error: ‘Packet’ is not a template Packet.cpp:9: error: ‘PacketCreate’ was not declared in this scope Packet.cpp:9: error: expected primary-expression before ‘;’ token PacketHeader.h: In member function ‘virtual Packet& Packet::createPacket(PacketHeader&, PacketData&)’: PacketHeader.h:13: error: ‘int PacketHeader::size’ is private Packet.cpp:14: error: within this context Packet.cpp:17: error: ‘map’ was not declared in this scope PacketHeader.h:12: error: ‘int PacketHeader::type’ is private Packet.cpp:17: error: within this context PacketData.h:9: error: ‘std::string PacketData::str’ is private Packet.cpp:17: error: within this context Packet.cpp:17: error: ‘::iterator’ has not been declared Packet.cpp:17: error: expected ‘;’ before ‘mapping’ Packet.cpp:19: error: ‘mapping’ was not declared in this scope |
|||
|
||||
| andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 6 Всего: 33 |
положи весь проект в архив. если не секретный, конечно
-------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
| dgolukas |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 30.8.2009 Репутация: нет Всего: нет |
не секретный) завтра с родительского компа заархивирую, у меня на линуксе только Ark, который почему-то только открывает архивы) спсб!!! |
|||
|
||||
| dgolukas |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 30.8.2009 Репутация: нет Всего: нет |
сорре, что пропала.пришлось срочно уехать вобщм я все переделала без фабрики и просто конструктор класса протокол принимает на вход указатель на экземпляр класса хиддер и на экземпляр класса дата. ну и все) все работает вобщм. спасибо за помощь!!! |
|||
|
||||
| NYX |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 165 Регистрация: 9.1.2007 Где: Россия, Москва Репутация: нет Всего: нет |
А кампот?
Это сообщение отредактировал(а) NYX - 16.1.2010, 10:36 --------------------
'long long long' is too long for GC |
|||
|
||||
| dgolukas |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 30.8.2009 Репутация: нет Всего: нет |
компот))
ну вот пакет хидер
и сам пакет)
|
||||
|
|||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |