|
7 / 7 / 3
Регистрация: 17.04.2014
Сообщений: 156
|
||||||
Как перегрузить методы, чтобы получились аналоги get set из C#12.10.2015, 22:15. Показов 6627. Ответов 75
Метки нет (Все метки)
Как можно перегрузить методы, что бы получился аналог get set из C#. Т.е. что то такое:
0
|
||||||
| 12.10.2015, 22:15 | |
|
Ответы с готовыми решениями:
75
Как сделать, чтобы из числа, допустим, 0,040005000 после 5 получились звёздочки Std::set с кастомным классом, как правильно перегрузить оператор < ? Как перегрузить методы Equals() и GetHashCode(), для сравнения свойств объектов? |
|
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
|
|
| 12.10.2015, 23:33 | |
|
0
|
|
|
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
|||||||
| 12.10.2015, 23:33 | |||||||
1
|
|||||||
|
7 / 7 / 3
Регистрация: 17.04.2014
Сообщений: 156
|
|||||||
| 12.10.2015, 23:33 [ТС] | |||||||
|
Например у меня есть класс с несколькими переменными:
0
|
|||||||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|
| 12.10.2015, 23:38 | |
|
0
|
|
|
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
||
| 12.10.2015, 23:43 | ||
|
0
|
||
|
7 / 7 / 3
Регистрация: 17.04.2014
Сообщений: 156
|
||||||||||||||||
| 12.10.2015, 23:52 [ТС] | ||||||||||||||||
|
Пока что вот это кажется самым близким к ответу:
0
|
||||||||||||||||
|
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
||
| 12.10.2015, 23:55 | ||
|
0
|
||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|||
| 13.10.2015, 00:00 | |||
|
другое дело, что они просто не востребованы. поддерживаются ещё с незапамятных времен.
0
|
|||
|
7 / 7 / 3
Регистрация: 17.04.2014
Сообщений: 156
|
|||
| 13.10.2015, 00:01 [ТС] | |||
|
0
|
|||
|
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
|||
| 13.10.2015, 00:13 | |||
|
0
|
|||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||||||
| 13.10.2015, 00:28 | ||||||
|
1. нет. не живут. 2. проперти там нафиг не упали. дело в том, что они не дают ровным счетом никакого профита в сравнении с самыми обычными геттерами/сеттерами. в них просто нет смысла. либо вы опять начали тупить. крестовых указателей на функцию-член объекта не существует в природе. их умеют все компиляторы ещё с бородатых времен. и не имеет никакого отношения ни к указателям на функцию-член, ни к шаблонам. в общем, вы опять начинаете нести бред.
0
|
||||||
|
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
|||||
| 13.10.2015, 00:45 | |||||
|
Добавлено через 5 минут Второй профит - управление доступом к полям на чтение запись. Read only поля к примеру, без излишнего в таком случае вызова геттера. Ну и то без чего не обойдется визувльное проектирование в принципе - эти таблички подстановки записываются компилятором в RTTI и используются инспектором объектов для визуального редактирования. Добавлено через 3 минуты
0
|
|||||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|||||||||||||||||
| 13.10.2015, 00:57 | |||||||||||||||||
|
потому что правила языка. именно поэтому, не существует указателей-на-функцию-член, без указания класса, к которым относятся функции-члены. не путайте понятие "указатель на функцию-член" и "делегат". ваш returntype (__closure *Proc)(arglist); только выглядит как указатель. на самом деле это - делегат. довольно таки жалкий по своим возможностям. но все таки, это - делегат, а не member-function-pointer. там под капотом целая механика по связыванию объекта с указателем-на-функцию-член. на языке с++ существует стандартный делегат: std::function, который предоставляет богатые возможности по части любых связок как для свободных функций, так и для функций-членов, и для лямбд, и для любых других функторов. Добавлено через 7 минут и привычнее. в любой цивилизованной идешке можно вбить:
уберите префиксы "set"/"get" , и получите зоопарк имен. и это плохо для читабельности. выглядит как доступ к обычному полю класса, но на самом деле под капотом те же самые сеттеры/геттеры. здесь нет выигрыша в эффективности. с точки зрения оптимизации:
в обоих случаях все прекрасно inline. и нет никаких лишних вызовов. но формошлепству это как то так особе не помешало. ну-ну.
0
|
|||||||||||||||||
|
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
|||
| 13.10.2015, 00:59 | |||
|
У Бъерна явно с ООП всегда туго было. А то бы сразу понял что биндинг чего либо к делегату избыточен, все что ему передается должен передавать вызывающий, а весь этот шаблонно-лямбдовый синтаксис опять же тоже только ухудшает читабельность и ведет к ошибкам. А вот указатели которые называются указателем на члены (с указанием типа класса) действительно не востребованы. За 20 лет которые С++ колупаю ни разу не встречал чтобы где то применялись. Добавлено через 1 минуту
0
|
|||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|||
| 13.10.2015, 01:00 | |||
|
не взирая на тот факт, что какой нибудь qt и без всякой рефлексии формошлепит, только в путь.
0
|
|||
|
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
||||||||
| 13.10.2015, 01:12 | ||||||||
Добавлено через 5 минут
0
|
||||||||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|||||||||||||
| 13.10.2015, 01:15 | |||||||||||||
|
во времена доса его ещё не существовало. std::function вошел в стандарт начиная лишь с++11. std::function и есть делегат. он умеет цеплять любые функциональные объекты: функции, функции-члены, лямбды, функторы. ему пофигу анонимное оно там, или нет. может цеплять как по значению, так и по ссылкам. вы сами поняли, что за бред написали, и как это коррелирует с реальным положением дел? или лямбды? что именно в следующей строке вам трудно прочитать?
использует их у себя под капотом, например. Добавлено через 1 минуту так вы покажите пример рантайм-рефлексии? или это так, пустые слова?
0
|
|||||||||||||
|
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
||||||||||||||||||||||||||
| 13.10.2015, 07:04 | ||||||||||||||||||||||||||
|
Добавлено через 2 минуты вызов ассемблируется на прямую. Добавлено через 2 минуты Добавлено через 5 минут Добавлено через 19 минут А передача указателя именно на метод требуется тогда когда класс-подписчик неизвестен вызывающему классу, т.е на каждом шагу. А что касается правила языка, то правила алгоритмического языка растут из потребностей программистов. Если стандарт отстал от жизни лет на 20 то это проблемы комитета и тех производителей компиляторов которые тупо следуют стандарту. Никакие темплейты и стандартизация бибилиотек в дальнейшем развитии языка не помогут, если игнорировать эффективные и насущные потребности в расширении синтаксисиа. Добавлено через 16 минут А то не комитет по стандартизации получается а отдел сбыта фирмы Dinkumware Добавлено через 14 минут Добавлено через 11 минут Причина в принципе понятна. Но не понятно что они еще пытаются выжать из такого вспомогательного средства как шаблоны. Шаблоны нельзя ставить во главу угла так как компайл-тайм полиморфизм никогда не заменит ран-тайм полиморфизм. Поэтому основой должно быть ООП, а соответсвенно устранение в стандарте недоделок в плане синтаксиса свойств и делегатов и стандартизации рефлекшина, а шаблоны - вспомогательное средство. Но при таком подходе Dinkumware в трубу вылетит. Добавлено через 24 минуты Добавлено через 5 минут Пример:
Добавлено через 1 час 10 минут Obj.Value++; чем Obj.SetValue(Obj.GetValue()+1); По этому эффективность в скорости набора кода и читабельности алгоритма налицо. Мне деньги платят за безошибочно работающий функционал. А вам наверное за количество символов в коде? Добавлено через 25 минут
0
|
||||||||||||||||||||||||||
| 13.10.2015, 07:04 | |
|
получить все комбинации по парам x y, чтобы получились следующие массивы Из каждого предложения удалить знаки препинания чтобы получились лексемы Как перегрузить оператор = , чтобы ф-ция была дружественной Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Оказывается, Unreal Engine позволяет качество на порядки выше, чем было в Lineedge
Etyuhibosecyu 05.07.2026
Жаль, конечно, что я не узнал об этом, пока Lineedge существовала, а то бы Noname2331 написал, что волки превращаются в пиксельную кашу, а я бы его попросил скачать какую-нибудь бриллиантовую или Pro. . .
|
Doom для терминала без стрельбы и монстров. 3D Raycasting на ascii.
dcc0 05.07.2026
Попросил нейронную сеть deepai. org написать рейкастинг 3D с библиотекой ncurses для Linux. Чтобы можно было
ходить на стрелочки. Чтобы стены были отрисованы символами. Справилась.
Первый вариант. . .
|
Установка статуса документа по условию
Maks 05.07.2026
Алгоритм из решения ниже реализован на нетиповом документе "НарядПутевка" разработанного в КА2.
Задача: в табличной части "Материалы" документа при записи автоматически устанавливать статус. . .
|
Сезонность и суточность закисления почв
anaschu 04.07.2026
200 часов это все равно моловато. Есть ситуации, но нестандартные, когда смена происходит за 5 лет.
Но обычно это 50 лет и более.
Наверное, закисление почвы происходит сезонно в средней. . .
|
|
В чем ценность человеческого опыта в глобальном смысле?
kumehtar 03.07.2026
Возможно, ценность человека не в том, что он однажды достигает мудрости, а в том, что он становится носителем карты пути. Он знает не только истину, но и последовательность внутренних изменений,. . .
|
интеграция AnyLogic с самописным REST API и переход на Odoo
anaschu 03.07.2026
Успешная интеграция AnyLogic с самописным REST API и переход на промышленную Odoo WMS
Сегодня проделал огромный путь от простой симуляции физических процессов до построения полноценной. . .
|
Поиск всех путей на ориентированном графе. Linux
dcc0 02.07.2026
Переработка старого кода из моей статьи.
Через несколько переработок от PHP кода к C89 (надеюсь, 89).
Но довольно запутанно получилось. Код для Linux.
Но если убрать time и то, что с ним. . .
|
Сам себя обучал rest api
anaschu 02.07.2026
Педагогический лайфхак: Почему чистый REST API для ученика намного круче, чем готовые библиотеки
Когда мы отказались от капризного JAR-файла AnyLogic и переписали код на стандартный HttpClient,. . .
|