Open apolukhin opened 3 years ago
Andrey, 23 июля 2018, 13:55
В C++17 Ваш пример класcа student
совершенно валидный, так что все что Вы хотите разрешено уже сейчас.
Игорь Шаповал, 23 июля 2018, 14:31 При добавлении к полям класса атрибутов setter/getter компилятор сгенерирует методы установки и считывания. Нам не надо писать самому.
dreverser, 24 июля 2018, 13:05 Игорь Шаповал, зачем геттеры и сеттеры ? сделайте поля паблик
в гугле можно найти много споров на эту тему, но я так же согласен с тем что пустые геттеры и сеттеры не нужны
yndx-antoshkka, 23 июля 2018, 15:46 Начиная с C++17 можно писать любые свои атрибуты, но вот навесить на них функционал просто так не получится.
Сейчас идёт активная работа над рефлексией и кодогенерацией в C++. Как только работа завершится и попадёт в стандарт - можно будет наделять атрибуты каким-то занчением и действительно делать getter/setter. А до тех пор - придётся ждать :(
Саша Зайцев, 23 июля 2018, 17:16 yndx-antoshkka, как вариант для своего функционала советую написать свои плагины для Clang-Tidy, который будет опираться на кастомные атрибуты.
Fihtangolz, 3 августа 2018, 3:44 yndx-antoshkka, а шо слышно, есть инфа по метаклассам?, прупозал по текушей рефлексии отклонили?, добавят ли cod injection в constexpr блоки и будут ли они.
yndx-antoshkka, 6 августа 2018, 11:46 Всё будет, но не в C++20. Я немного обмолвился об этом вот тут
Айдар Фаттахов, 30 июля 2018, 18:17 Нужны метаклассы а не вот это вот
Перенос предложения: голоса +13, -2 Автор идеи: Игорь Шаповал
Каждый компилятор имеет набор специфичных для него набор атрибутов. В С++11 ввели синтаксис для атрибутов в стандарт и начали добавлять стандартные атрибуты.
Атрибуты в С++ подобны по механизма анотаций в языке Java. Следующие строки в языках одинаковые
Но в отличие от Java, нельзя реализовывать пользовательские атрибуты. Например, было бы не плохо добавить атрибуты setter/getter
Для реализации пользовательских атрибутов, как вариант, добавить ключевое слово attribute
Пользовательские атрибуты лучше объявлять в пользовательском namespace. И добавить мета-атрибут, который будет определять для кого этот атрибут