> S>А если класс библиотечный? А если мне надо его в одном месте передавать по ссылке, в другом — по значению? > > Обычно. > > P.S. > У вас есть предложение как красивее решить ?
Я вообще не понимаю, для чего вы все это затеваете. Умному оно не надо, а дураку все равно не поможет.
Posted via RSDN NNTP Server 2.0
Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.
>> S>А если класс библиотечный? А если мне надо его в одном месте передавать по ссылке, в другом — по значению? >> >> Обычно. >> >> P.S. >> У вас есть предложение как красивее решить ?
S>Я вообще не понимаю, для чего вы все это затеваете. Умному оно не надо, а дураку все равно не поможет.
Исправить С++
P.S.
Иногда нужна фабрика, которая позволит создать любой тип, а не некоторые типы
Имхо, чем больше типов, тем сложнее в них разобраться. Этот проект имеет право на жизнь в коком-то совсем кастомном фреймворке, но не повсеместно. Самый большой нерулез — необходимость насделоваться от val_obj, object
Здравствуйте, Константин Л., Вы писали:
КЛ>Здравствуйте, _nn_, Вы писали:
КЛ>Имхо, чем больше типов, тем сложнее в них разобраться. Этот проект имеет право на жизнь в коком-то совсем кастомном фреймворке, но не повсеместно. Самый большой нерулез — необходимость насделоваться от val_obj, object
Это из-за кривого дизайна С++
Можно в макрос обернуть, тогда наследование автоматически будет.
> S>Я вообще не понимаю, для чего вы все это затеваете. Умному оно не надо, а дураку все равно не поможет. > Исправить С++ > > P.S. > Иногда нужна фабрика, которая позволит создать любой тип, а не некоторые типы
Создавать вообще любой тип без поддержки языка все равно не получится. Создавать "почти любой" тип требуется крайне редко, а поддержка такой функциональности вряд ли будет бесплатной. Как минимум — приведет к увеличению времени компиляции-линковки, возможно существенному. Ну и ручками про каждый тип все равно писать что-нибудь придется. Вряд ли это будет сильно востребовано.
Posted via RSDN NNTP Server 2.0
Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.
Здравствуйте, Sergey, Вы писали:
>> S>Я вообще не понимаю, для чего вы все это затеваете. Умному оно не надо, а дураку все равно не поможет. >> Исправить С++ >> >> P.S. >> Иногда нужна фабрика, которая позволит создать любой тип, а не некоторые типы
S>Создавать вообще любой тип без поддержки языка все равно не получится.
Увы это так S>Создавать "почти любой" тип требуется крайне редко, а поддержка такой функциональности вряд ли будет бесплатной. Как минимум — приведет к увеличению времени компиляции-линковки, возможно существенному. Ну и ручками про каждый тип все равно писать что-нибудь придется. Вряд ли это будет сильно востребовано.
Но можно все классы пронаследовать от object, в каждый класс добавить идентификатор и можно будет писать:
Здравствуйте, _nn_, Вы писали:
G>>Но еще лучще — ввести концепт на то, что параметром функции является только класс с определенным методом size() __>Ну ну, попробуйте реализовать универсальный has_method
Гм... концепт — это не enable_if, а то, что дает вменяемую и быстро понимаемую лшибку компиляции. Учите матчасть, раздел буста о концептах. Весьма там здравые идеи, хотя реализация как обычно подкачала G>>А если серьезно — ни к чему засорять язык ненужными надстройками, мощь плюсов — в том числе и в поддержке интегральных типов. А вот если вы строите концептуально красивую систему — ну не будет у вас там нужды оперировать интегральными типами, классики в основном бегать будут... __>А передачу типов как осуществлять ? __>В конечном итоге где-то есть интеракция с API который написан на С
Ни разу не видно как предполагаемый фреймворк облегчит взаимодействие с C-кодом. А вот как утяжелит — оч. даже видно.
Здравствуйте, Garrrrr, Вы писали:
G>Здравствуйте, _nn_, Вы писали:
__>>Но можно все классы пронаследовать от object, в каждый класс добавить идентификатор и можно будет писать: __>>
__>Например я хочу функцию, которая будет принимать любой тип. __>На данный момент мне надо писать шаблонную функцию, а так можно заменить на нешаблонную.
Может тогда нужен другой язык, а не С++ ?
Of course, the code must be complete enough to compile and link.
Здравствуйте, Lorenzo_LAMAS, Вы писали:
__>>Например я хочу функцию, которая будет принимать любой тип. __>>На данный момент мне надо писать шаблонную функцию, а так можно заменить на нешаблонную.
L_L>Может тогда нужен другой язык, а не С++ ?
Нужен.
Но что делать если надо на С++
> G>А в фабрике большой-большой свитч по id? Я так же могу сделать шаблонную фабрику и специализировать ее под все поддерживаемые типы. > > switch, как вы могли произнести это слово ? > > Фабрика с саморегистрацией ! http://rsdn.ru/forum/?mid=1788774
Вы хорошо себе представляете, во что это выльется, если регистрировать абсолютно все типы? Лично мне такой хоккей не нужен — разве что в каких-нибудь мелких проектах, где всего сотня-другая типов используется.
Posted via RSDN NNTP Server 2.0
Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.
> S>Создавать вообще любой тип без поддержки языка все равно не получится. > Увы это так > S>Создавать "почти любой" тип требуется крайне редко, а поддержка такой функциональности вряд ли будет бесплатной. Как минимум — приведет к увеличению времени компиляции-линковки, возможно существенному. Ну и ручками про каждый тип все равно писать что-нибудь придется. Вряд ли это будет сильно востребовано. > > Но можно все классы пронаследовать от object, в каждый класс добавить идентификатор и можно будет писать: >
> smart_ptr<object> create_object(id_type id);
>
Кто будет следить за уникальностью идентификаторов? Что будете делать в случае шаблонов? Что будете делать с Dll'ками — экспортировать/импортировать функции создания объектов? Все три тыщщи штук? А что делать с объектами без конструкторов по умолчанию?
Posted via RSDN NNTP Server 2.0
Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.
Здравствуйте, _nn_, Вы писали:
__>Одна из проблем C++ в том, что существуют так называемые примитивные типы. __>Стандарное решением было ввести специализацию для примитивных типов и для остальных типов.
__>Для решения этих и других проблем был создан проект C++ Object.
__>Основные цели проекта: __> Создание иерархие типов. (например int32 <- value_type <- object). __> Встроенная сериализация каждого типа. __>Дальнейшие цели будут добавленны мере развития библиотеки.
Быть может managed C++ спасёт Отца русской демократии ?
(просто предположение)
Переходите на Java. Там все Ваши "проблемы" уже решены, есть там и всеобщее наследование от Object. Вы видите в описанных примерах ограничения для работы — я напротив ещё одну степень свобода. Вопрос — с какой стороны смотреть и на сколько глубоко.
Re[7]: Cpp-Object
От:
Аноним
Дата:
19.05.06 10:59
Оценка:
Здравствуйте, _nn_, Вы писали:
__>Здравствуйте, Lorenzo_LAMAS, Вы писали:
__>>>Например я хочу функцию, которая будет принимать любой тип. __>>>На данный момент мне надо писать шаблонную функцию, а так можно заменить на нешаблонную.
L_L>>Может тогда нужен другой язык, а не С++ ? __>Нужен. __>Но что делать если надо на С++
Уволится и поступить на работу в контору, где разработки ведутся на Java
Здравствуйте, srggal, Вы писали:
S>Здравствуйте, _nn_, Вы писали:
__>>Одна из проблем C++ в том, что существуют так называемые примитивные типы. __>>Стандарное решением было ввести специализацию для примитивных типов и для остальных типов.
__>>Для решения этих и других проблем был создан проект C++ Object.
__>>Основные цели проекта: __>> Создание иерархие типов. (например int32 <- value_type <- object). __>> Встроенная сериализация каждого типа. __>>Дальнейшие цели будут добавленны мере развития библиотеки.
S>Быть может managed C++ спасёт Отца русской демократии ? S>(просто предположение)
>> S>Создавать вообще любой тип без поддержки языка все равно не получится. >> Увы это так >> S>Создавать "почти любой" тип требуется крайне редко, а поддержка такой функциональности вряд ли будет бесплатной. Как минимум — приведет к увеличению времени компиляции-линковки, возможно существенному. Ну и ручками про каждый тип все равно писать что-нибудь придется. Вряд ли это будет сильно востребовано. >> >> Но можно все классы пронаследовать от object, в каждый класс добавить идентификатор и можно будет писать: >>
S>Кто будет следить за уникальностью идентификаторов? Что будете делать в случае шаблонов? Что будете делать с Dll'ками — экспортировать/импортировать функции создания объектов? Все три тыщщи штук?
Если будут одинаковые иднетификаторы программа просто не запустится например
S> А что делать с объектами без конструкторов по умолчанию?
boost.in_place_factory
Решение не настроенно на универсальность, в рамках С++, видимо, полной универсальности не выйдет