Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Как спрятать кастинг под капот
|
|||
|---|---|---|---|
|
#18+
kosh the best> я не стану вас разочаровывать, но правда наверное вам не понравится )))) о боже! просто напиши все это на си так будет лучше я как бы обеими руками за, но если бы вы хоть как-то намекнули как именно.... если вы имеете ввиду что-то типа Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. Если вы про это, то скорее всего на строчке memcpy() нас ждет великий облом, если A содержит в себе датамеберы через указатели типа class A { int* a;}; но если вы подскажете, где взять супер функцию типа deep_memcpy() или true_memcpy() тогда было бы круто!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2012, 16:06 |
|
||
|
Как спрятать кастинг под капот
|
|||
|---|---|---|---|
|
#18+
Для начала с головой будет достаточно перестать превращать с++ в js. 1. Вы тратите много времени на борьбу с собственноручно созданными мельницами. 2. Результат все-равно на js не похож и не будет. Т.е. не достигнут. А путаница, которая будет мешать вашим "пользователям" достигнута. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2012, 16:13 |
|
||
|
Как спрятать кастинг под капот
|
|||
|---|---|---|---|
|
#18+
Lumix, этот вопрос вообще решают не в плоскости языка а в плоскости алгоритмов и структур данных. Если у тебя есть такая структура как дерево и тебе надо сделать копию поддерева то делай фукцию copy_subtree(..) и копируй. Не вешай на С++ обязательства которые к ЯП не имеют отношения. Это неоправданное (и опасное) усложнение парадигмы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2012, 16:17 |
|
||
|
Как спрятать кастинг под капот
|
|||
|---|---|---|---|
|
#18+
О том, что вы задачу в двух топиках лаконично и понятно описать не можете - я уж вообще молчу. Вместо описания того, что вам РЕАЛЬНО надо, вы придумываете несуществующие примеры того, что вам не надо, а через 3 страницы бз всяких угрызений совести сообщаете "а, то я так, для примера привел... мы такое не юзаем, конечно". А нафига ж тогда 3 страницы обсуждали то, что вы не юзаете - не понятно. Так что, ничему не удивляйтесь, когда обсуждается кот в мешке, а общественности то хвост покажут, то шнурки (а кот тут при чем? да ни при чем - так для примеру). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2012, 16:17 |
|
||
|
Как спрятать кастинг под капот
|
|||
|---|---|---|---|
|
#18+
maytonЭто неоправданное (и опасное) усложнение парадигмы. Вполне возможно, что он просто пытается создать фрейморк, аля js-овских ассоциативных массивов-объектов. Если так, то Дельфи или C# позволили бы ему достичь большей "похожести" с js. А так - разрыв шаблона из-за ярого нежелания использовать нормальные классы с нормальными методами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2012, 16:23 |
|
||
|
Как спрятать кастинг под капот
|
|||
|---|---|---|---|
|
#18+
Edd.DragonДля начала с головой будет достаточно перестать превращать с++ в js. Знаете, в свое время я понял, что очень опасно приводить реальные примеры кода, потому что вместо помощи их станут обсирать чисто ради поднятия ЧСВ. И я стал выкладывать малюсенькие примеры. А теперь я вижу, что совершил грубейшую ошибку, упомянув как метафору js в одном из доводов и теперь весь форум думает, что я хочу превратить c++ в js и теперь каждый хочет мне сообщить, что с++ это не js. После этого случая я теперь и метафоры перестану использовать!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2012, 16:47 |
|
||
|
Как спрятать кастинг под капот
|
|||
|---|---|---|---|
|
#18+
Edd.Dragon2. Результат все-равно на js не похож и не будет. Т.е. не достигнут. А путаница, которая будет мешать вашим "пользователям" достигнута. Вот я ещё раз эксплиситно всем сообщаю: я не пишу js на C++!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2012, 16:48 |
|
||
|
Как спрятать кастинг под капот
|
|||
|---|---|---|---|
|
#18+
Edd.DragonВполне возможно, что он просто пытается создать фрейморк, аля js-овских ассоциативных массивов-объектов. Если так, то .... ))))) это уже становится как: Петровна, слышала, что Медведев завел блох в свитере? Мужики, ну хорош, а...!!)) ну какие нахрен массивы, чё вы придумываете??))) тема совсем о другом я тему-то как назвал: как спрятать кастинг под капот при чем тут массивы??? я фигею.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2012, 16:53 |
|
||
|
Как спрятать кастинг под капот
|
|||
|---|---|---|---|
|
#18+
LumixEdd.DragonДля начала с головой будет достаточно перестать превращать с++ в js. Знаете, в свое время я понял, что очень опасно приводить реальные примеры кода, потому что вместо помощи их станут обсирать чисто ради поднятия ЧСВ. И я стал выкладывать малюсенькие примеры. А теперь я вижу, что совершил грубейшую ошибку, упомянув как метафору js в одном из доводов и теперь весь форум думает, что я хочу превратить c++ в js и теперь каждый хочет мне сообщить, что с++ это не js. После этого случая я теперь и метафоры перестану использовать!! А я тебе минуту назад хотел посоветовать про Lua почитать. Так что... проехали уже? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2012, 16:55 |
|
||
|
Как спрятать кастинг под капот
|
|||
|---|---|---|---|
|
#18+
maytonА я тебе минуту назад хотел посоветовать про Lua почитать. Так что... проехали уже? Смотря о чем читать. Вы там оба ведь написали: нафиг вообще на плюсах это городить, сделай управление памятью на си. Я подумал, что речь о memcpy() То есть если вы имеете ввиду взять сорсы луа и там будет функция deep_memcpy() тогда готов ознакомится с вашей идеей ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2012, 17:17 |
|
||
|
Как спрятать кастинг под капот
|
|||
|---|---|---|---|
|
#18+
LumixmaytonА я тебе минуту назад хотел посоветовать про Lua почитать. Так что... проехали уже? Смотря о чем читать. Вы там оба ведь написали: нафиг вообще на плюсах это городить, сделай управление памятью на си. Я подумал, что речь о memcpy() То есть если вы имеете ввиду взять сорсы луа и там будет функция deep_memcpy() тогда готов ознакомится с вашей идеей Парень, в Lua нет вообще 90% тех проблем которые та нарисовал. Это язык с управляемой памятью по принципу GC. Там нет утечек. Там нет наследования. И нет кастингов со срезкой полей или методов. Этот язык - это просто клондайк для тебя. И я тебя нижайше прошу не будоражить форум надуманными проблемами. Ты вовлёк в дискурс специалистов очень высокого класса (это я тебе как старый мембер говорю). Но потом раз... и написал сущую ерунду. Сразу знаешь-ли както разочаровал. Поэтому не злоупотребляй доверием и приходи сюда с интересными вопросами. С теми которых нет в справочниках и предварительно подучив основы. Все неинтересные мы читаем в миллионый раз и не посылаем в ФАК по той причине что на нашем форуме этого FAQ-а (по С++) просто нет. Успехов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2012, 17:28 |
|
||
|
Как спрятать кастинг под капот
|
|||
|---|---|---|---|
|
#18+
maytonПарень, в Lua нет вообще 90% тех проблем которые та нарисовал. Не понял фразу... Подставьте вместо Lua другой язык программирования и какой реакции вы от меня ждете? Парень, в C# нет вообще 90% тех проблем которые та нарисовал. Парень, в Java нет вообще 90% тех проблем которые та нарисовал. Парень, в Python нет вообще 90% тех проблем которые та нарисовал. Парень, в Javascript нет вообще 90% тех проблем которые та нарисовал. Или вы думаете, что в нашей команде кто-то станет заниматься биндингом всех с++ классов в подпространство луа?? Задача, которые мы тут обсуждаем касается С++. Причем тут луа-то?? Я и спросил, если в сорсах луа есть что-то, что поможет решить задачу про глубокое копирование, то я посмотрю сорсы, а если нет, то нам луа не нужна как инструмент... мы же не игры пишем... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2012, 17:49 |
|
||
|
Как спрятать кастинг под капот
|
|||
|---|---|---|---|
|
#18+
LumixЗнаете, в свое время я понял, что очень опасно приводить реальные примеры кода Правильно, нужно создать минимальный демонстрационный образец. Без лишнего наполнения. Lumixи теперь весь форум думает, что я хочу превратить c++ в js Дык, развейте домыслы. Сами же оставили пустые пятна для них )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2012, 17:56 |
|
||
|
Как спрятать кастинг под капот
|
|||
|---|---|---|---|
|
#18+
Не надо ничего развивать. Тема подходит к концу и ее пора закрывать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2012, 17:58 |
|
||
|
Как спрятать кастинг под капот
|
|||
|---|---|---|---|
|
#18+
Lumixтема совсем о другом я тему-то как назвал: как спрятать кастинг под капот Никак. А та проблема, из которой этот вопрос вырос, вполне возможно решается красиво и элегантно. Как знать. Тоже самое касается и вопроса "как автоматически подчистить". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2012, 17:58 |
|
||
|
Как спрятать кастинг под капот
|
|||
|---|---|---|---|
|
#18+
Edd.DragonLumixЗнаете, в свое время я понял, что очень опасно приводить реальные примеры кода Правильно, нужно создать минимальный демонстрационный образец. Без лишнего наполнения. дык, так я так и делаю, а меня упрекают, что я типа прячу реальный код, в котором решаю задачу Edd.DragonLumixи теперь весь форум думает, что я хочу превратить c++ в js Дык, развейте домыслы. Сами же оставили пустые пятна для них )) Позиция исчерпывающе изложена вот тут 13633846 все остальное домыслы и черновиковые мысли... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2012, 18:16 |
|
||
|
Как спрятать кастинг под капот
|
|||
|---|---|---|---|
|
#18+
maytonНе надо ничего развивать. Тема подходит к концу и ее пора закрывать. Согласен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2012, 18:17 |
|
||
|
Как спрятать кастинг под капот
|
|||
|---|---|---|---|
|
#18+
Edd.DragonLumixтема совсем о другом я тему-то как назвал: как спрятать кастинг под капот Никак. А та проблема, из которой этот вопрос вырос, вполне возможно решается красиво и элегантно. Как знать. Тоже самое касается и вопроса "как автоматически подчистить". Решение с кастирующим аксессором обладает 100% элегантностью для нашего кодстайла. Код: plaintext 1. 2. 3. Такой подкапот 100% подходит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2012, 18:20 |
|
||
|
Как спрятать кастинг под капот
|
|||
|---|---|---|---|
|
#18+
LumixEdd.Dragonпропущено... Никак. А та проблема, из которой этот вопрос вырос, вполне возможно решается красиво и элегантно. Как знать. Тоже самое касается и вопроса "как автоматически подчистить". Решение с кастирующим аксессором обладает 100% элегантностью для нашего кодстайла. Код: plaintext 1. 2. 3. Такой подкапот 100% подходит. Вы взяли, как советовал, shared_ptr и тем самым избавились от Memory Leak. Но до сих пор кастите предка в наследника, т.е. вам в вашем модуле надо будет сверху написать предупреждение: Attention! Undefined behavior of the module. И в ChangeLog'e добавить это предупреждение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2012, 21:05 |
|
||
|
Как спрятать кастинг под капот
|
|||
|---|---|---|---|
|
#18+
LumixТакой подкапот 100% подходит. Ну вот я спрашивал - кто все это объявляет и когда/где? Внутренности функции b ваши? new A - пишет пользователь? Где чей код? Это так сложно расписать четко и однозначно? Если этот вопрос не осветить, то все считается вашим. Если ваше - то нет вообще необходимости ни в шаредах, ни в подкапоте - вы просто пишете delete там, где ему место и все. Так где появляется необходимость во всем этом, и почему вы не можете удалить самостятельно старый объект при добавлении нового? Неужели невозможное объяснить прошу? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2012, 21:12 |
|
||
|
Как спрятать кастинг под капот
|
|||
|---|---|---|---|
|
#18+
реинтерпрет-кастомВы взяли, как советовал, shared_ptr и тем самым избавились от Memory Leak. Но до сих пор кастите предка в наследника, т.е. вам в вашем модуле надо будет сверху написать предупреждение: Attention! Undefined behavior of the module. И в ChangeLog'e добавить это предупреждение. Я его не кастю, потому что не знаю как это сделать. см. задачу про кастинг тут 13634956 Конкретно это решение не про кастинг, а про как спрятать под капот. Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2012, 21:47 |
|
||
|
Как спрятать кастинг под капот
|
|||
|---|---|---|---|
|
#18+
Lumixреинтерпрет-кастомВы взяли, как советовал, shared_ptr и тем самым избавились от Memory Leak. Но до сих пор кастите предка в наследника, т.е. вам в вашем модуле надо будет сверху написать предупреждение: Attention! Undefined behavior of the module. И в ChangeLog'e добавить это предупреждение. Я его не кастю, потому что не знаю как это сделать. см. задачу про кастинг тут 13634956 Конкретно это решение не про кастинг, а про как спрятать под капот. Код: plaintext 1. 2. 3. Есть то что вы хотите, а есть реальность - то что происходит. Конкретно вот в этом коде происходит реинтерпрет каст предка в наследника, как и во всех других ваших вариантах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2012, 21:56 |
|
||
|
Как спрятать кастинг под капот
|
|||
|---|---|---|---|
|
#18+
Edd.DragonНу вот я спрашивал - кто все это объявляет и когда/где? Это объявляет макрос автоматически в месте, где прописывается объект B чисто условно это место можно назвать файл b.h и b.cpp Edd.DragonВнутренности функции b ваши? Наши. Edd.Dragonnew A - пишет пользователь? Где чей код? Это так сложно расписать четко и однозначно? Нет, new вызывает код, который нам недоступен. Он расположен внутри динамических библиотек, которые мы используем as is, у нас есть только заголовочные и *.a файлы мы получаем указатель через некий внешний интерфейс, который я на протяжении этих тем называл вот так Код: plaintext 1. 2. Edd.DragonЕсли этот вопрос не осветить, то все считается вашим. Если ваше - то нет вообще необходимости ни в шаредах, ни в подкапоте - вы просто пишете delete там, где ему место и все. наши пользователи никогда не пишут delete с целью управления объектами. единственное использование delete это схлопывание стадии целиком. в этом смысле delete это всегда некий синоним closeState() Код: plaintext 1. Edd.DragonТак где появляется необходимость во всем этом, и почему вы не можете удалить самостятельно старый объект при добавлении нового? Неужели невозможное объяснить прошу? Потому что пользователям запрещено пользоваться new и delete с целью управления памятью, потому что если им это разрешить, тогда обязательно появятся ошибки из-за невнимательности, а это приведет к падению кода архитектура системы выстроена таким образом, что у каждого класса автоматически создается аксессор если есть класс A всегда есть A* a() если есть класс Jopa, то всегда есть Jopa* jopa() (вернее раньше так было, а сейчас все будет на шарепоинтах, но смысл тот же) раньше можно было вызывать delete a(), а сейчас придется a().reset() раньше a() = new A; работало, но порождало висяк если я что-то упустил, сообщите, я добавлю ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2012, 22:00 |
|
||
|
Как спрятать кастинг под капот
|
|||
|---|---|---|---|
|
#18+
ну и разумеется из-за чего я вообще пришел на этот форум Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2012, 22:04 |
|
||
|
Как спрятать кастинг под капот
|
|||
|---|---|---|---|
|
#18+
LumixПотому что пользователям запрещено пользоваться new и delete Это понятно. А внутри функции b() кому и почему запрещено пользоваться delete? Ровно в том месте, где ты принимаешь новый объект и знаешь, что старый можно удалить (на каком основании - тоже не ясно). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2012, 22:05 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=38079662&tid=2020587]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
72ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
54ms |
get tp. blocked users: |
1ms |
| others: | 15ms |
| total: | 182ms |

| 0 / 0 |
