|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
04.08.2012, 15:18 | #21 | |
Старожил
Регистрация: 16.12.2011
Сообщений: 2,329
|
Цитата:
Код:
Последний раз редактировалось _Bers; 04.08.2012 в 16:24. |
|
04.08.2012, 15:46 | #22 |
Участник клуба
Регистрация: 15.07.2008
Сообщений: 1,933
|
Да, но с этим ничего не поделать, разве только использовать rvalue-reference из C++11 или константные ссылки. Но покажите сценарий использования, пока что я не увидел целесообразности Ваших чаяний. Быть может и не нужен универсальный механизм для всех параметров?
|
04.08.2012, 16:52 | #23 | |
Старожил
Регистрация: 16.12.2011
Сообщений: 2,329
|
Цитата:
Если бы у меня была поддержка нового стандарта, то я вообще бы особо даже и не заморачивался. В новом стандарте есть такие вещи, которые позволяют делать все что угодно в плане кодо-генерации. Я не могу вам предоставить весь сценарий (ибо много букав получится) Могу сообщить идею: функция-приемник получает данные любых типов, и в любых количествах (существует ограничение на максимальное количество возможных аргументов. Но предусмотрена возможность в любой момент времени увеличить это количество). Внутри функции-приёмника создается объект "передатчик" Передатчик создает "носитель аргументов", особый тип данных, в который он может загрузить значения всех полученных аргументов. Передатчик выполняет запрос к получателю: "типы аргументов удовлетворяют ожидаемым?" Если нет - ситуацию будет разруливать "служба безопасности". Если все в порядке, то передатчик пуляет носитель аргументов получателю. Получатель берет в руки носитель, из которого вытряхивает все аргументы, какие ему были нужны, ну и что то с ними делает. Если получатель изменит значение мутабельной ссылки, то оригинал (переменная, которую запулил в приемник) тоже изменится. Вообще, вся эта хрень не плохо работает. Но есть проблема - если принимать аргументы по значению - срабатывают копирующие конструкторы. А если принимать по константным ссылкам - то внутри приёмника, передатчик уже не знает, был ли полученный аргумент изначально константным, или не был. А получатель теоретически может изменить значение константного объекта. приведу пример: Код:
Все работает, ничего не ломается. Падумаешь... изменили значение константы магического числа... |
|
04.08.2012, 22:58 | #24 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,342
|
Используйте лучше <<
|
04.08.2012, 23:39 | #25 |
Участник клуба
Регистрация: 15.07.2008
Сообщений: 1,933
|
_Bers, быть может будет лучше, если вместо своих абстрактных описаний Вы приведёте код? Трудно понять, что же именно Вам надо. Может быть средств boost хватит, вроде boost :: (c)ref?
|
05.08.2012, 16:22 | #26 |
Старожил
Регистрация: 16.12.2011
Сообщений: 2,329
|
Большое спасибо за совет. Я ознакомился с бустовскими механизмами, и выработал для себя приемлемое решение.
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Реализация выигрышной стратегии для компьютера | makc56 | Паскаль, Turbo Pascal, PascalABC.NET | 13 | 18.05.2012 13:32 |
движок для стратегии | lamer69 | Свободное общение | 1 | 22.05.2011 01:16 |
Карта для стратегии | sincemix | Gamedev - cоздание игр: Unity, OpenGL, DirectX | 5 | 21.07.2010 23:54 |
Передача аргументов программе на Си, как реализовать? | cympak | Общие вопросы C/C++ | 6 | 02.03.2010 19:49 |
Типы аргументов при перегрузке функций | Arkuz | Общие вопросы C/C++ | 4 | 24.02.2009 01:16 |