Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Пятничные get-ы
|
|||
|---|---|---|---|
|
#18+
у MS была такая неудобная штука, declspec(property), которая позволяла заводить псевдоним для переменной, к которому были привязаны set и get. Так как get обычно штука простая, то я нашёл для себя делать так: Код: plaintext 1. 2. 3. 4. 5. Кто что думает по этому? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2018, 05:34 |
|
||
|
Пятничные get-ы
|
|||
|---|---|---|---|
|
#18+
CEMb, показал бы как это работает, а то без поллитры тут явно не разберёшься ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2018, 08:22 |
|
||
|
Пятничные get-ы
|
|||
|---|---|---|---|
|
#18+
kealon(Ruslan)показал бы как это работает, а то без поллитры тут явно не разберёшься Я так понимаю речь про readonly доступ к Type Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2018, 08:26 |
|
||
|
Пятничные get-ы
|
|||
|---|---|---|---|
|
#18+
CEMb, const_cast'ом можно обойти read-only защиту. Если сильно хочется, можно завести шаблонный класс Property и переопределить у него operator=() и operator T(), которому в конструкторе можно передавать лямбды-аксессоры, которые будут вызываться в этих операторах. До пропертей сисярпа/питона далеко. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2018, 08:36 |
|
||
|
Пятничные get-ы
|
|||
|---|---|---|---|
|
#18+
Dima T, теперь понял, старею видимо NekZ, Ему просто нужна абстракция, что бы "не налететь". Обходы понятно всегда есть, главное что бы они были "видимые" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2018, 08:56 |
|
||
|
Пятничные get-ы
|
|||
|---|---|---|---|
|
#18+
NekZconst_cast'ом можно обойти read-only защиту.дело не в защите, дело в автоматике и удобстве, чтобы я по ошибке не написал в коде: Код: plaintext 1. и при это не надо было бы писать: Код: plaintext 1. NekZЕсли сильно хочется, можно завести шаблонный класс PropertyИ так я тоже делаю, но у этой конструкции немного другой смысл. NekZДо пропертей сисярпа/питона далеко.а чем они так уникальны? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2018, 09:01 |
|
||
|
Пятничные get-ы
|
|||
|---|---|---|---|
|
#18+
CEMb, я так и не понял - чего ты хочешь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2018, 09:19 |
|
||
|
Пятничные get-ы
|
|||
|---|---|---|---|
|
#18+
rdb_dev, я хочу переменную, которую: 1. можно писать-читать в классе и/или иерархии классов 2. можно только читать вне класса и/или иерархии классов Т.е. более простой (синтаксически и по коду) аналог get-a. Read-only-представитель переменной наружу. Ну и это, как бы, топик про исследование подходов к решению таких или подобных задач ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2018, 10:08 |
|
||
|
Пятничные get-ы
|
|||
|---|---|---|---|
|
#18+
CEMbдело не в защите, дело в автоматике и удобстве, чтобы я по ошибке не написал в коде: Код: plaintext 1. и при это не надо было бы писать: Код: plaintext 1. Сложно, не распарсил. CEMbNekZДо пропертей сисярпа/питона далеко.а чем они так уникальны? Уникальны тем, что они уже есть в самой грамматике языка out-of-the-box, а также они имеют больше возможностей для создания DSL. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2018, 10:26 |
|
||
|
Пятничные get-ы
|
|||
|---|---|---|---|
|
#18+
CEMb, мне кацца, будто я уже показывал тебе подобный способ: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2018, 11:12 |
|
||
|
Пятничные get-ы
|
|||
|---|---|---|---|
|
#18+
Естественно, можно и так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2018, 11:26 |
|
||
|
Пятничные get-ы
|
|||
|---|---|---|---|
|
#18+
NekZУникальны тем, что они уже есть в самой грамматике языка out-of-the-box, а также они имеют больше возможностей для создания DSL.а что они конкретно умеют, в чём преимущество перед C++? rdb_devCEMb, мне кацца, будто я уже показывал тебе подобный способ:Интересный вариант, но это немного перпендикулярно к тому, о чём я говорил. И вдобавок, это set, а не get. А ещё у тебя там пара кастов, которые можно было бы заменить шаблонной функцией? А вот последний оператор мне не понятен. Ну, т.е. понятно, что указатель на родительскую структуру вычисляется по смещению. А это надёжно? Не проще ли как-то в конструкторе в SET передать указатель/ссылку сразу? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2018, 05:23 |
|
||
|
Пятничные get-ы
|
|||
|---|---|---|---|
|
#18+
CEMbа что они конкретно умеют, в чём преимущество перед C++? Да хотя бы та же интроспекция в рантайме и создание новых типов "на лету". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2018, 08:25 |
|
||
|
Пятничные get-ы
|
|||
|---|---|---|---|
|
#18+
CEMbИнтересный вариант, но это немного перпендикулярно к тому, о чём я говорил. И вдобавок, это set, а не get.Там и set есть... Приглядись повнимательней! Он в отдельной инкапсулированной структуре. CEMbА ещё у тебя там пара кастов, которые можно было бы заменить шаблонной функцией?Да, конечно можно. CEMbА вот последний оператор мне не понятен. Ну, т.е. понятно, что указатель на родительскую структуру вычисляется по смещению. А это надёжно?Конечно надёжно! Обычное взятие адреса и арифметика указателей... Никакого доступа к памяти по разыменованию указателя, приводившего бы к т.н. "неопределённому поведению" тут нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2018, 09:34 |
|
||
|
Пятничные get-ы
|
|||
|---|---|---|---|
|
#18+
rdb_devТам и set есть... Приглядись повнимательней! Он в отдельной инкапсулированной структуре.Нене, вот именно, я говорил про get только. И я говорил про отдельную переменную в классе, а у тебя пример про работу с самим классом через set. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2018, 13:54 |
|
||
|
Пятничные get-ы
|
|||
|---|---|---|---|
|
#18+
CEMbНене, вот именно, я говорил про get только. И я говорил про отдельную переменную в классе, а у тебя пример про работу с самим классом через set.Так адаптируй пример под свою задачу. Делов-то... Просто я так точно и не понял, что именно, в итоге, ты хочешь получить и не сделал так, как ты хочешь. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2018, 14:24 |
|
||
|
Пятничные get-ы
|
|||
|---|---|---|---|
|
#18+
rdb_devТак адаптируй пример под свою задачу. Делов-то...так моё решение в одну строчку... rdb_devПросто я так точно и не понял, что именно, в итоге, ты хочешь получить и не сделал так, как ты хочешь. :)я хотел сделать простой механизм для read-only, чтобы переменную извне можно было читать, но нельзя писать. Я сделал константную ссылку на закрытую переменную, т.е. сам класс может работать с переменной, а наружние могут только читать её через ссылку. И я хотел узнать, нет ли где ошибки в моём решении? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2018, 05:07 |
|
||
|
Пятничные get-ы
|
|||
|---|---|---|---|
|
#18+
CEMb, Единственный минус, который я вижу - дополнительный указатель в каждом экзэмпляре подобного типа. Для крупных типов это не проблема, а если тип мелкий и состоит из пары интов, то их размер вырастает на треть(а то и в половину). И если таких эксзэмпляров миллион, то это 4(8)МБ дополнительной памяти. И компилятор не имеет права выкинуть это поле, хотя пользоваться им, скорее всего, не будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2018, 05:15 |
|
||
|
Пятничные get-ы
|
|||
|---|---|---|---|
|
#18+
ну и лично для меня - это определяющий минус. я считаю, что держать в памяти бессмысленные данные нельзя, это повышает энтропию и приближает тепловую смерть вселенной ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2018, 05:19 |
|
||
|
Пятничные get-ы
|
|||
|---|---|---|---|
|
#18+
rdb_devПросто я так точно и не понял, что именно, в итоге, ты хочешь получить и не сделал так, как ты хочешь. :)я хотел сделать простой механизм для read-only, чтобы переменную извне можно было читать, но нельзя писать. Я сделал константную ссылку на закрытую переменную, т.е. сам класс может работать с переменной, а наружние могут только читать её через ссылку. И я хотел узнать, нет ли где ошибки в моём решении?[/quot]Всего лишь? Я-то думал... :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2018, 05:23 |
|
||
|
Пятничные get-ы
|
|||
|---|---|---|---|
|
#18+
alex_kЕдинственный минус, который я вижу - дополнительный указатель в каждом экзэмпляре подобного типа.Какой дополнительный указатель? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2018, 05:26 |
|
||
|
Пятничные get-ы
|
|||
|---|---|---|---|
|
#18+
rdb_devКакой дополнительный указатель? Который ссылка ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2018, 06:29 |
|
||
|
Пятничные get-ы
|
|||
|---|---|---|---|
|
#18+
NekZrdb_devКакой дополнительный указатель? Который ссылкаЗдесь тоже есть ссылка - prvalue оператора приведения типа: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2018, 07:06 |
|
||
|
Пятничные get-ы
|
|||
|---|---|---|---|
|
#18+
CEMbу MS была такая неудобная штука, declspec(property), которая позволяла заводить псевдоним для переменной, к которому были привязаны set и get. Так как get обычно штука простая, то я нашёл для себя делать так: Код: plaintext 1. 2. 3. 4. 5. Кто что думает по этому? Я думаю, что это нестандарт и must die. (это про declspec(property), не про код) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2018, 15:57 |
|
||
|
Пятничные get-ы
|
|||
|---|---|---|---|
|
#18+
MasterZivЯ думаю, что это нестандарт и must die.Что именно? Надо развернуть вопрос ширше По-правильному мы держим все переменные в private-секции, чтобы чужие классы не могли без нашего ведома поменять их значение. А чтобы они могли, когда это нужно, надо завести пару функций, set и get. Тут начинается моё мнение: бездумное следование этому правилу приводит к ситуации, когда класс наполняют куча вырожденных set-ов и get-ов, которые просто присваивают значение и возвращают его, просто потому что так правильно. Поэтому я считаю, что когда ввод-вывод значения в переменную класса не нуждается в проверках - set и get делать ненужно, а просто сделать переменную public и, если надо, назвать соответствующе нотации. Частный случай, когда никто кроме самого класса установить значение переменной не может, вместо get-а можно(?) использовать public const-ссылку на эту переменную, что я и написал в первом посте. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2018, 05:20 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=39652321&tid=2017840]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
50ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
| others: | 281ms |
| total: | 426ms |

| 0 / 0 |
