![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Graf_h |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 482 Регистрация: 18.10.2007 Где: г. Ровно, Украина Репутация: 2 Всего: 5 |
Как организовать, точнее описать класс, чтобы я каждому обьекту класса мог динамически добавлять методы и члены данных в любом месте своей пргораммы? и что бы они были доступны в любом месте вызова обьекта
-------------------- Иногда переменная - это просто переменная |
|||
|
||||
| Daevaorn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2155 Регистрация: 29.11.2004 Где: Москва Репутация: 51 Всего: 70 |
Наследование?
|
|||
|
||||
| Graf_h |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 482 Регистрация: 18.10.2007 Где: г. Ровно, Украина Репутация: 2 Всего: 5 |
-------------------- Иногда переменная - это просто переменная |
|||
|
||||
| vinter |
|
|||
![]() Explorer ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2735 Регистрация: 1.4.2006 Где: Н.Новгород Репутация: 13 Всего: 56 |
||||
|
||||
| Graf_h |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 482 Регистрация: 18.10.2007 Где: г. Ровно, Украина Репутация: 2 Всего: 5 |
Можна! Например ActionScript! там класы спроектированы так что я могу динамически создавать их методы или члены данных!
-------------------- Иногда переменная - это просто переменная |
|||
|
||||
| Rififi |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1254 Регистрация: 9.3.2008 Репутация: 11 Всего: 36 |
Graf_h,
ActionScript не не является компилируемым языком. а так... можно сделать COM-обьект на основе IDispatchEx |
|||
|
||||
| MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 52 Всего: 207 |
Graf_h,
хватит оффтопить! вам уже сказали, что нельзя такое сделать в С++ -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
| Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 41 Всего: 154 |
фи какая гадость... Добавлено через 2 минуты и 16 секунд можно добавить к классу динамический массив объектов типа boost::any, и еще один динамический массив объектов типа boost::function< boost::any (boost::any)>, а толку с этого |
|||
|
||||
| Graf_h |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 482 Регистрация: 18.10.2007 Где: г. Ровно, Украина Репутация: 2 Всего: 5 |
Всем спасибо!
-------------------- Иногда переменная - это просто переменная |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
Ты хочешь писать скрипты или просто собрать класс из разных (уже написанных) функций ?
если скрипты- то подключай интерпретируемый язык - луа или питон Это сообщение отредактировал(а) mes - 22.4.2008, 10:14 |
|||
|
||||
| Graf_h |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 482 Регистрация: 18.10.2007 Где: г. Ровно, Украина Репутация: 2 Всего: 5 |
Нет, скрипты я нехочу писать -------------------- Иногда переменная - это просто переменная |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
покажи пример предполагаемой тобой функциональности, чтоб представить что ты хочешь |
|||
|
||||
| Graf_h |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 482 Регистрация: 18.10.2007 Где: г. Ровно, Украина Репутация: 2 Всего: 5 |
Это для того чо бы не ломать голову над тем что у меня должен делать обьект! Чтобы я в любой момент мог обьекту прицепиить то поведение какое мне нужно в определеный момент! Например как в ActionScript,кстати насколько я знаю ActioScript спроектирован на C++! вот мне и стало интересно каким способом разработчики этого добились!Кто хоть раз програмировал на AS тот поймет!Иногда бывает удобно просто прицепить то что мне нужно к отдельному обьекту, а не проектировать всю иерархию! -------------------- Иногда переменная - это просто переменная |
|||
|
||||
| Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 41 Всего: 154 |
Это называется композиция объектов
|
|||
|
||||
| Alek86 |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1299 Регистрация: 30.1.2007 Где: Киев Репутация: 21 Всего: 25 |
||||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
||||
|
||||
| Graf_h |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 482 Регистрация: 18.10.2007 Где: г. Ровно, Украина Репутация: 2 Всего: 5 |
Вот примерно так! просто я начинаю новыйпроект и хочу спроектировать его правильно, просто и быстро! Вот это гарантирует что будет только один обьект! и мне нужно ему цыплять свойства примерно так:
Код может быть с ошибками но сама идея понятна! тоесть что бы сразу можно было вцепить то чт омне по ходу нужно!Эт намного облегчит проектирование Это сообщение отредактировал(а) Graf_h - 22.4.2008, 16:14 -------------------- Иногда переменная - это просто переменная |
||||
|
|||||
| Kappac |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 203 Регистрация: 30.9.2006 Где: Украина, Киев Репутация: нет Всего: нет |
Примерно так... Это сообщение отредактировал(а) Kappac - 22.4.2008, 16:14 --------------------
|
|||
|
||||
| JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 18 Всего: 162 |
Угу. А ещё есть такая штука - указатели на функцию. Динамические донельзя
|
|||
|
||||
| Graf_h |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 482 Регистрация: 18.10.2007 Где: г. Ровно, Украина Репутация: 2 Всего: 5 |
То как првильно спроектировать? а то придется все описывать... -------------------- Иногда переменная - это просто переменная |
|||
|
||||
| Daevaorn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2155 Регистрация: 29.11.2004 Где: Москва Репутация: 51 Всего: 70 |
||||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
Какой ужас! вначале объявить класс синглетоном а только потом его описывать. "не каждая рыба-селедка, но каждая селедка - рыба" © Льюис Кэролл
Это сообщение отредактировал(а) mes - 22.4.2008, 17:34 |
|||
|
||||
| Graf_h |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 482 Регистрация: 18.10.2007 Где: г. Ровно, Украина Репутация: 2 Всего: 5 |
Синглтон это так для страховки! а описывать его незачем! как мне добавить в этот обьект этого класа свойства которые не описаны в класе! вот проблема... Это сообщение отредактировал(а) Graf_h - 22.4.2008, 17:41 -------------------- Иногда переменная - это просто переменная |
|||
|
||||
| mes |
|
||||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
типа такого? а ты уверене что тебе это облегчит разботку и отладку проги? именно поэтому и спрашивал примера твоего представления того что тебе нужно |
||||
|
|||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
Сейчас прошелся по улице и кажись понял что тебе нужно .. и совсем не динамическое добавление свойств объекту...
тебе нужна именно композиция (кто то уже писал выше) тогда каждую "маленькую задачу" ты будешь решать отдельно не влияя на код остального проекта и при всем этом все маленькие задачи будут одним целым. |
|||
|
||||
| Graf_h |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 482 Регистрация: 18.10.2007 Где: г. Ровно, Украина Репутация: 2 Всего: 5 |
Кода еще нет никакого,я сейчас хочу спроектировать, а уже потом начинать програмировать!Я впринцыпе хорошо знаю ActionScript, и вот что мне в нем нравится, что там я любому обьекту могу прицепить то свойство, которое мне "нравится", например, в AS есть встроенный класс MovieClip со своими свойствами.Но я могу дописать свои даже их не обявляе в классе! Вот я и задумался, можно ли такое сделать на с++,это намного облегчаеть проектирование и розработку!
Нет,нажаль не композиция, я знаю что это такое!Вот маленький пример,того что мне нужно:
Конечно же при таком создании класса компилятор будет ругатся! вот и вопрос как можно это решить,если вообще возможно -------------------- Иногда переменная - это просто переменная |
||||||
|
|||||||
| mes |
|
||||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
в с++ обязательно описание должно предшествовать вызову - необходимо это для контроля типов. можно реализовать свой класс и вызывать методы по их строковому имени
но тогда у тебя не будет ни какого контроля со стороны компилятора - поэтому в таких случаях используют не с++, а языки с динамическим контролем типов Это сообщение отредактировал(а) mes - 23.4.2008, 09:54 |
||||
|
|||||
| Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 41 Всего: 154 |
есть 2 варианта этой проблемы, расширение свойств класса в compile time и в run time
в compile time решается наследованием, или включением, можно враппер какой-нибудь или декоратор написать и тд в run time, для этого могут использоваться всякие вариантные типы данных, обобщенные функторы и тд.. но класс, в который ты что-то хочешь добавить, должен быть спроектирован особым образом, лучше в этом случае прикрутить скриптовый движок к программе(python, lua...), и реализовывать бизнес логику на нем |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
и все таки я больше чем уверен, что ты ищешь причину своих трудностей не там ..
до сих пор не привел ни одного примера, где тебе необходимо была бы такая возможность )) Это сообщение отредактировал(а) mes - 23.4.2008, 10:08 |
|||
|
||||
| Graf_h |
|
||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 482 Регистрация: 18.10.2007 Где: г. Ровно, Украина Репутация: 2 Всего: 5 |
Вот пример:
больше никаких свойств.Далее:
далее
Пример может не настолько удачный, но все же... Это сообщение отредактировал(а) Graf_h - 23.4.2008, 10:19 -------------------- Иногда переменная - это просто переменная |
||||||||
|
|||||||||
| Fazil6 |
|
||||||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1653 Регистрация: 3.5.2006 Где: Минск Репутация: 35 Всего: 60 |
не понимаю чем это удобно...
как это? Один объект на все случаи жизни?
пишешь кучу интерфейсов с нужным поведением каждый и от всех сразу наследуешься. В разных ситуациях юзаешь объект через разных предков. А вообще есть довольно неплохое правило "одна задача - один класс" |
||||||
|
|||||||
| vinter |
|
|||
![]() Explorer ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2735 Регистрация: 1.4.2006 Где: Н.Новгород Репутация: 13 Всего: 56 |
то что ты хочешь это называется антипроектрование. Кстати как ты себе представляешь, что ты понаписывал кучу свойств к объекту? они должны быть где то определены, вот для этого и надо грамотно проектировать, исходя из вариантов использования выделять свойства и методы. Но все равно спроектировать с нуля готовую систему, которую потом можно просто переписать на язык, практически нереально, скорее всего потом столкнешься с какой нибудь трудностью. В процессе реализации
|
|||
|
||||
| Graf_h |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 482 Регистрация: 18.10.2007 Где: г. Ровно, Украина Репутация: 2 Всего: 5 |
Понятно! всем спасибо за помощь
Это сообщение отредактировал(а) Graf_h - 23.4.2008, 12:23 -------------------- Иногда переменная - это просто переменная |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |