Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
Skeld
Зарегистрирован: 27.04.2005 Сообщения: 5 Откуда: Новокузнецк
|
Добавлено: Ср Июн 29 2005 08:42 Заголовок сообщения: Подскажите на C++ сделать следующее... |
|
|
Хотелось бы написать функцию в которую передовалось разное количество параметров с любыми типами данных. Эта функция в свою очередь создавала структуру с этими самыми параметрами.
Как это реализовать?
Заранее спасибо. |
|
Вернуться к началу |
|
|
Kefir
Зарегистрирован: 16.04.2005 Сообщения: 443 Откуда: Пермь
|
Добавлено: Ср Июн 29 2005 11:29 Заголовок сообщения: |
|
|
Как передавать функци различное число параметров разного типа я не помню, надо книжки читать, которых под рукой у меня нет.
Во время выполнения при всем желании структуру создать невозможно.
Но можно сформировать класс контейнер, что-то типа ассоциативного массива, а там получать доступ ко всему что там есть, узнавать тип и все такое. |
|
Вернуться к началу |
|
|
Skeld
Зарегистрирован: 27.04.2005 Сообщения: 5 Откуда: Новокузнецк
|
Добавлено: Ср Июн 29 2005 12:04 Заголовок сообщения: |
|
|
Был бы признателен, за пример кода. ) А то как-то не доходит. )
Заранне Благодарю. |
|
Вернуться к началу |
|
|
kolobok0
Зарегистрирован: 22.04.2005 Сообщения: 253 Откуда: Мсква
|
Добавлено: Ср Июн 29 2005 17:58 Заголовок сообщения: Если... |
|
|
Если разное кол-во, но типы известны (и их позиции) то катит стандартное обьявление дефолтного значения параметра.
Если передавать-создавать непонятно что (хотя по мне - енто есть повод почитать про ООД либо примеры интересного применения си плас плас - Джэфа Элджера), то у Вас напрашиваеться коллекция нечто (поля структур) содержащие в себе типизацую каждого айтема. При этом перекрытые методы доступа позволяют более осмысленно юзать это из кода. Плюсы - наверное очевидно (решение). Минус - нет типизации (и чиссо моё имхо) мона реализовать красивее.
с уважением
(круглый) _________________ (круглый) |
|
Вернуться к началу |
|
|
Wladimir
Зарегистрирован: 02.03.2005 Сообщения: 150 Откуда: Ставропольский край
|
Добавлено: Чт Июн 30 2005 20:49 Заголовок сообщения: |
|
|
Я бы делал через ссылку на std :: vector вариантов. Варианты - либо борландовский Variant, либо boostовые. |
|
Вернуться к началу |
|
|
Skeld
Зарегистрирован: 27.04.2005 Сообщения: 5 Откуда: Новокузнецк
|
Добавлено: Пт Июл 01 2005 04:12 Заголовок сообщения: |
|
|
Я тоже думал что Вариант, но в моём случае критично расходование памяти. Так что не подходит. Думаю попробывать по другому. Всем кто откликнулся спасибо. )
Для kolobok0: Как красивее? Можно поподробнее? _________________ Упаси меня от друзей, а от врагов я сам избавлюсь. |
|
Вернуться к началу |
|
|
kolobok0
Зарегистрирован: 22.04.2005 Сообщения: 253 Откуда: Мсква
|
Добавлено: Пт Июл 01 2005 14:10 Заголовок сообщения: Про красоту... |
|
|
"Красиво" - то зависит уже от способа решения конкретной задачи. Думаю стоит Вам взглянуть на книжку Элджера. Она даёт писчу для размышлений. Ну например проскакивает такой термин как "виртуальный конструктор" что немного не вяжеться с языком на котором это рассматриваеться занимательная информация. На мой взгляд есть ышо целая "маленькая тележечка" приёмов, которые в принцепе ничего сверхгениального не несут. Однако же эти примеры в "повседневной" рутине значительно могут облегчить код и сделать его более интересным.
Например...
Все мы сталкивались в тех или иных обработчиках GUI с необходимостью типизировать обьект приходящий по событию. Уверен, что после ознакомления с этой книгой у Вас в коде исчезнуть такие весчи как switch() или if..if...if...
удачи Вам
(круглый) _________________ (круглый) |
|
Вернуться к началу |
|
|
Skeld
Зарегистрирован: 27.04.2005 Сообщения: 5 Откуда: Новокузнецк
|
Добавлено: Пт Июл 01 2005 14:31 Заголовок сообщения: |
|
|
Спасибо за совет, уже читаю интересная книжечка. )))
Всем огромное спсибо. _________________ Упаси меня от друзей, а от врагов я сам избавлюсь. |
|
Вернуться к началу |
|
|
Laptev M.
Зарегистрирован: 25.02.2005 Сообщения: 23
|
Добавлено: Сб Июл 02 2005 00:39 Заголовок сообщения: |
|
|
Народ, а вы не подскажите точное название этой книги, или не могли бы дать на неё ссылку в инете? |
|
Вернуться к началу |
|
|
Aragaer
Зарегистрирован: 28.03.2005 Сообщения: 164
|
Добавлено: Сб Июл 02 2005 00:55 Заголовок сообщения: |
|
|
Вариант для С без ++
Запихнуть все данные в произвольном порядке в некий массивчик (с помощью memcpy). Запихнуть в другую строчку порядок типов в ней (допустим строка "iicd" будет обозначать int, int, char, double, но это исключительно для примера). Указатель на исходный массивчик перекинуть в виде указателя на char, как и полагается.
Внутри программмы memcpy'ами все разобрать на составляющие.
Либо передать значения по ссылке. То есть безо всяких трюков с памятью перекинуть массив указателей и массив типов. _________________ Open your eyes.
And Awaken. |
|
Вернуться к началу |
|
|
Skeld
Зарегистрирован: 27.04.2005 Сообщения: 5 Откуда: Новокузнецк
|
|
Вернуться к началу |
|
|
|