![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| boostcoder |
|
||||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
а это идея! Добавлено через 1 минуту и 31 секунду вот только это:
я понятия не имею как сделать..ведь все генерится в одной файловой единице.. Добавлено через 3 минуты и 41 секунду можно так: http://liveworkspace.org/code/901c72dce341...1318da49939ef96 |
||||
|
|||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
все равно не понимаю для чего аксессоры оставлять внутри, а эти методы выносить..
|
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
||||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
можно. но в этом случае придется написать два макроса. один вписывать в .hpp файле со всеми параметрами. а второй в .cpp файле, так же, со всеми параметрами.. а если случиться несоответствие между параметрами, то понять причину ошибки будет очень не просто Добавлено @ 00:07 а это, как раз основная причина из-за которой недолюбливают препроцессорную кодогенерацию. Это сообщение отредактировал(а) boostcoder - 7.5.2011, 00:08 |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
что подразумевается под "всеми параметрами" ? Добавлено через 1 минуту и 2 секунды кстати зачем все так сложно ? зачем аксессоры ? зачем наследование ? Добавлено через 4 минуты и 40 секунд что должна уметь Ваша структура ? 1. иметь наиболее близкий к классическому интерфейсу структуры 2. уметь отобразить строковые имена структуры и методов 3. являться/преобразоваться к tuple 4. сериализоваться и выводиться в поток, но это avtomatizirovano na osnovanii punkta 2.. что еще ? |
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
это:
угу. это все. Добавлено через 42 секунды ну и иметь еще уникальный id, который можно использовать в компайл-тайм. |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
просто придется лишние файлы делать.. defs.hpp inc.hpp src.hpp где два последних включают defs между своих метаген инклудов а все остальные пользуют inc.hpp Добавлено через 4 минуты и 24 секунды второй набросок : http://liveworkspace.org/code/bd091abb264f...a4979a83bb2d449 |
|||
|
||||
| boostcoder |
|
||||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
хм.. очень даже узабильно Добавлено через 4 минуты и 59 секунд
осталось понять для чего это нужно |
||||
|
|||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
если нужна возможность разделения на интерфейс и реализацию... Добавлено через 1 минуту и 17 секунд пока это всего лишь ход мыслей.. на вид отвратительно просто иначе, пока не напишешь, трудно понять чего хочется |
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
что разделять, если это генерирует препроцессор? Вы ведь глазами тот код не увидите Добавлено через 1 минуту и 35 секунд или Вы предлагаете сначала вручную запускать препроцессор чтоб он сгенерил что нужно, а потом использовать сгенеренное как единицу трансляции? |
|||
|
||||
| mes |
|
||||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
зачем вручную ? в нужной единице трансляции будет включена typedefs как реализация, а в остальных, как интерфейс.. Добавлено через 1 минуту и 10 секунд
препроцессору можно указать, чтоб в одном случае результатом был интерфейс, в другом реализация.. Добавлено через 1 минуту и 45 секунд набросок 3: http://liveworkspace.org/code/c127b050f95c...83b624536fc1b6b Добавлено через 3 минуты и 35 секунд при втором варианте описания (см. ссылку) теряем возможность автоматического id, в полезности которого я сомневаюсь..зато развязаны руки по оформлению класса... |
||||
|
|||||
| boostcoder |
|
||||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
это все хорошо.. Вы мне просто скажите: для чего это нужно? ну генерирует он себе код - пусть генерирует... может тогда оставить генерацию как есть? ;)
неее. id - как раз нужен... |
||||
|
|||||
| mes |
|
||||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
может и не нужно.. Добавлено @ 01:49 подумаем , как его добыть.. Добавлено @ 01:50 P.S. понимаю что id нужен, я не вижу выгоды в зависимости id от countera.. Добавлено @ 01:59 я бы наверно привел бы к такому виду :
набросок 4 : http://liveworkspace.org/code/82114ed27eeb...aa18f3339d378c0 если коллизии не сильно беспокоят, то набросок 5 : http://liveworkspace.org/code/fccd8f937463...f3458ef316c7969 вернулись к началу, но с другой стороны Это сообщение отредактировал(а) mes - 7.5.2011, 02:14 |
||||
|
|||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
а ее и нет. это скорее единственный выход.. по крайней мере, на момент написания генератора для задачи, я не нашел другого выхода. и сейчас тоже не вижу. ну есть у меня файлик в ~4000 строк, в котором описаны все типы. да, куча. ну ничего. комментирование очень помогает |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
а чем не нравится выход предложенный выше в последнем посте ? одна лишняя строчка для енума, зато полный контроль.. P.S. struct ids можно заменить на namespace ids .. Это сообщение отредактировал(а) mes - 7.5.2011, 09:05 |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |