|
7 / 7 / 3
Регистрация: 17.04.2014
Сообщений: 156
|
||||||
Как перегрузить методы, чтобы получились аналоги get set из C#12.10.2015, 22:15. Показов 7010. Ответов 75
Метки нет (Все метки)
Как можно перегрузить методы, что бы получился аналог get set из C#. Т.е. что то такое:
0
|
||||||
| 12.10.2015, 22:15 | |
|
Ответы с готовыми решениями:
75
Как сделать, чтобы из числа, допустим, 0,040005000 после 5 получились звёздочки Std::set с кастомным классом, как правильно перегрузить оператор < ? Как перегрузить методы Equals() и GetHashCode(), для сравнения свойств объектов? |
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|||||||||||||||||||||||||||||||||||
| 14.10.2015, 20:41 | |||||||||||||||||||||||||||||||||||
|
лишь наличием () в конце метода. и это - не есть критерий удобства в данном случае. удобнее то, что привычно и поддается системе. например, одна из важных причин, по которой рекомендуется использовать сеттеры/геттеры - это префиксы в именах функций. все методы, которые что-то устанавливают, начинаются с Set/set все методы, которые позволяют что-то узнать, начинаются с Get/get современная ИДЕ позволяет сразу показать весь список доступных методов по первым 3м буквам. это очень удобно. жмакаем set и сразу получаем список всего, что можно посетить для данного класса. так то можно было бы и обычные методы обзывать как угодно. как бы никто не запрещает. но обычно зоопарк никто специально не разводит. потому что люди более менее опытные ценят удобства использования. нужно знать адрес объекта для которого делается вызов, и адрес функции-члена, которую нужно возвать.
ничего революционного он не делает. например, все сеттеры начинаются с буковок set зоопарк имен никакой читабельности не улучшает. каким боком вы приплели RTTI вообще не понятно. вы ж не хотите мне сказать, что раньше я писал только сеттеры/геттеры, а теперь мне придется писать и сеттеры/геттеры, и проперти? причем сеттеры/геттеры за каким то фигом заталкивать в протестед? потому что записи вида:
как получить список функций-членов и данных-членов любого произвольного класса. std::function полностью реализован средствами самого языка. по сравнению с его возможностями, ваш костыль __closure - жалкий огрызок. вы как то очень легко противоречите реальности. технология шаблонов позволяет не иметь пенальти в рантайме. неудиветельно, что на её развитие и сделанна ставка. дело здесь не в левостоящем делегате. просто на плюсах нет такого синтаксиса:
0
|
|||||||||||||||||||||||||||||||||||
|
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
||||||
| 14.10.2015, 21:02 | ||||||
|
И как не наворачивай шаблоны от ран-тайм полиморфизма все равно не уйдешь. Добавлено через 5 минут
0
|
||||||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||||||
| 14.10.2015, 21:06 | ||||||
|
но и аргументы, с которыми его нужно будет позвать. компилятор знает все от и до о классах и функциях, которые сам же и генерит по шаблону. поэтому, шаблоны отлично inline. приведите пример оверхеда. оверхед рантайм-решения добавляют. на то оно и рантайм, что выполняется в рантайме. и не испытывают проблем. а ну да, вы ж вроде бы STL не осилили. ну понятно, откуда ноги растут. он целиком и полностью повторяет поведение указателей на функции-члены. Добавлено через 57 секунд
0
|
||||||
|
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
||
| 14.10.2015, 21:06 | ||
|
0
|
||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|||
| 14.10.2015, 21:09 | |||
|
потому что из того факта, что язык не поддерживает синтаксис: obj.method никак не следует ущербная функциональность std::function. он умеет все, что может ваш кастрат, плюс ещё многое полезное, чего ваш кастрат не умеет.
0
|
|||
|
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
||||
| 14.10.2015, 21:15 | ||||
|
Добавлено через 3 минуты Добавлено через 1 минуту
0
|
||||
|
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
||||
| 14.10.2015, 21:21 | ||||
|
Добавлено через 46 секунд
0
|
||||
|
|
||
| 14.10.2015, 21:32 | ||
|
Просто предложенный тобою вариант не универсален, т.к. не соответствует стандарту, а ты преподносишь его как универсальное решение.
0
|
||
|
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
|||
| 14.10.2015, 21:45 | |||
|
Добавлено через 7 минут Потому что те же property у всех как бы есть(С++ Builder, MSVC++, Intel C++), но вообще то их не существует
0
|
|||
|
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
||
| 14.10.2015, 22:23 | ||
|
Просто как понял идея комитета исходила от Dinkumware потому как по другому у них со сбытом начало не получаться, в следствие того что расширения синтаксиса эффективнее шаблономазни. Такой комитет только тормозит развитие и стандартизацию языка. тот же smartptr реализуется средствами компилятора еще лучше и надежнее. достаточно только добавить для указателей модификатор local. Хотя действительно может просто быть редко пользуемым. Потому что примеры которые объясняют зачем нужен std::smart_ptr - ну вообще рассчитаны на криворуких идиотов пишущих хелловверды а не объектно-ориентированные библиотеки.
0
|
||
|
|
|||
| 14.10.2015, 22:32 | |||
|
Fulcrum_013, почему ты не член комитета? И почему ты до сих пор пользуешься этим языком?
0
|
|||
|
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
|||||
| 14.10.2015, 22:46 | |||||
|
Возникает другой интересный вопрос, почему и майкрософт и борланд изобретают свои шаблонные велосипеды вместо к примеру std::vector если в std::vector все так взвешенно и продуманно?
0
|
|||||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|||||||
| 14.10.2015, 23:20 | |||||||
|
просто это скрыто от пользователя. и весь геммор по связке берет на себя компилятор. все остальное - не портируемое, а значит имеет незначительную область применения. ни ваш кастрированный костыль, ни мехнизм пропертей. так что это не более, чем ваши фантазии. неужели так трудно понять? бинд аргументов - более чем востребованная фича. а по поводу оверхеда - вы сначала проверьте, потом вякайте. объясняешь человеку: шаблон inline во все поля. нет, человек тупит. у человека оверхед в сферическом вакууме. https://msdn.microsoft.com/ru-... 55798.aspx
0
|
|||||||
|
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
|||||||||||||||||
| 15.10.2015, 02:06 | |||||||||||||||||
|
Добавлено через 45 секунд Добавлено через 6 минут Потому как механизм такой вкусности есть уже как минимум 20 лет, а в стандарте ее нет. Добавлено через 9 минут Неужели std::function будет быстрее чем
Добавлено через 36 минут К примеру проперти - тоже можно расценивать как запуск расчета по событию обращения к переменной. Без closure событийная модель с объектами реализовывается либо через сообщения с тормознутой деспетчеризацией, либо через кучу костылей, третьего не дано. А без рефлекшина... ну если конечно у тебя набор взаимосвязей определен в компайл-тайме то можно и без рефлекшина. Но в большинстве задач эти взаимосвязи end-user мышкой клоц-клоц. Событие это такое же свойство, которые редактировать очень часто надо в рантайме. Не пилить же под каждую мелочь отдельную форму если на 99% с пилением формы и алгоритм в рантайме справляется по данным рефлекшина? Добавлено через 24 минуты Добавлено через 1 час 12 минут Но 20 лет назад они добавили __closure и сделали абсолютно все на нем. Не догадываешься почему?
0
|
|||||||||||||||||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||||||||||||||||||||
| 16.10.2015, 22:15 | ||||||||||||||||||||
|
потому что std::function умееет все тоже, плюс ещё многное. которые можно реализовать за счет возможностей самого языка. и это - правильно. ваш кастрированный делегат не умеет бинд аргументов вовсе не потому, что здесь какая то инженерная засада. технически реализовать бинд элементарно применив вашего же кастрата. однако это никак не согласуется с его дизайном. смотрите:
делегат для них будет слишком не эффективно. и нужен достаточно гибкий синтаксис, позволяющий и простые делегаты, и с захватом переменных среды. в результате имеем полнофункциональный, гибкий, мощный std::function, а не кастрированный делегат, который не умеет ничего, кроме нацеливания. что вы вообще не осознаете область применения. представьте себе задачу: нужно реализовать пул-задач. при создании задачи мы указываем, с какими аргументами задача должна запуститься в некотором будующем. std::function жрет подобное тривиально. ваш кастрат такое не умеет в принципе. как вы будите запоминать аргументы, с которыми нужно когда то в будущем позвать функцию? а это - очень распространенный кейс. но скажу, что не медленее. в простых случаях там прямые вызовы. то есть нет затрат на рантайм-полиморфизм. ещё раз, специально для тупеньких - шаблоны inline. без биндов std::function разворачивается точно так же, как и ваш кастрат, который в принципе не умеет бинды. я вообще то кросс-платформенный. я как бе не вчера замужем. то бишь, вся диспетчеризация разруливается ещё в компалтайме. в рантайме вообще никаких пенальти. она рвет и мечет qt, и прочие известные мне аналоги. для реализации такой системы мне не понадобилось ни тормознутое RTTI, ни указатели на функции-члены, ни делегаты. я что-то сделал не так? просто вы несете херь. вы позиционируете себя как старперра с 20 летним стажем. но несете такую ахинею, что создается устойчивое впечатление, что вы понятия не имеете о возможностях языка. как новобранец. я подозреваю,что вы остановились в развитии 20 лет назад. за программиста и будут сношаццо std::function, функторы, лямбды поэтому, производители предпочитали закладываться на собственные расширения, которые были им подкотрольны, нежели на стандарт, который в те времена был как "смутное время". по этой же причине, qt запили свой мок, например. их любят обвинять в неосиляторстве шаблонов. но правда в том, что когда qt стартовал, шаблоны были ещё слишком не стандартизированны.
0
|
||||||||||||||||||||
|
710 / 284 / 16
Регистрация: 31.03.2013
Сообщений: 1,340
|
||
| 16.10.2015, 22:21 | ||
|
А вообще твою бы энергию, да в мирное русло
0
|
||
|
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
|||||||||||
| 16.10.2015, 23:26 | |||||||||||
|
и __closure и __property и reflection без расширений компилятора в полном объеме не реализуются, без конкретных плясок с бубном причем не на уровне "один раз написал", а на уровне "в каждом использующем объекте" А к примеру указание из хидера с какой либой линковать вообще без расширения препроцессора не реализуемо. А подход без STL смутные времена - тупой бред. Потому что любую библиотеку с открытым кодом можно скомпилировать на другом компиляторе, какой бы нестандартной она ни была, если расширения компилятора одинаковые. Поэтому стандартизировать надо расширения компилятора а не никчемную библиотеку. Они и сейчас свои решения закладывают. К примеру майкрософт во всю пользует CGrowableArray а борланд TDynArray вместо std:vector. Никто не сможет обязать их пользовать в своих фрэймверках кривые поделки Dinkumware. Могут только обязать иметь их в комплекте. Добавлено через 9 минут А 20 лет назад переделали на фактически калбэки между объектами. А деспетчиризация используется только для обработки сообщений из очереди сообщений оси. Кстати и ось далеко не все передает через сообщения. Очень много идет через каллбэки. Добавлено через 11 минут TEvent a=b.OnEvent; c использованием std::function, а потом уже рассказывай какая она универсальная и хорошая. Добавлено через 4 минуты Добавлено через 7 минут Добавлено через 2 минуты Добавлено через 2 минуты Добавлено через 19 минут
0
|
|||||||||||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|||
| 16.10.2015, 23:29 | |||
|
но не стандартная тема. оно эксплуатирует нативные расширения компилятора по полной. причем "не документированные". я смотрел под микроскопом вижал-студийную версию. там используются вещи, о которых я в документациях и не подозревал. и не единого виртуального вызова. единственный виртуальный вызов, что я обнаружил исследуя реализацию: это искючение, если позвать делегат, не нацеленный никуда. Добавлено через 1 минуту если вы его не предоставите - ищите другого собеседника. мне балаболки не интересны.
0
|
|||
| 16.10.2015, 23:29 | |
|
получить все комбинации по парам x y, чтобы получились следующие массивы Из каждого предложения удалить знаки препинания чтобы получились лексемы Как перегрузить оператор = , чтобы ф-ция была дружественной Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер
На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
|
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/
TL DR
Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
|
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык.
Возвращает он вот это:
https:/ / i. **********/ vqBWLe2. png
Нужную строчку в 3й колонке просто выдумал. .
Это. . .
|
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor.
Это. . .
|
|
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js.
В помощники взял Яндекс-Алису.
Было создано три зала на разные интересы.
исторические и ретро
сериал Хичкок. . .
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#.
Название изменил на ColorStep.
Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
|
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами:
- ВидТО (СправочникСсылка. ВидыТО);
- ВидГСМ. . .
|