Я пытаюсь переопределить набор классов GLIB в C++ с использованием GLIBMM. Большинство из них багги и их нужно много расширять, и поскольку весь проект выполнен на C++, я предпочитаю переносить код, прежде чем исправлять его.gblimm/gtkmm custom property
К сожалению, я не эксперт GLIB, и даже если я провел много дней вокруг официальной документации, я все еще испытываю трудности в понимании некоторых концепций, особенно вокруг свойств.
Насколько я понял, свойства являются полной заменой (и, возможно, более) для сеттеров и геттеров. В принципе, вместо использования специализированных методов для каждого атрибута для всех из них используется общий метод set/get_property, доступ к свойству с именем (или идентификатором) и использование контейнера типа GValue для хранения нескольких типов данных.
Единственное преимущество, которое я вижу в этом, - это возможность доступа к свойствам с именами, содержащимися в строках (которые могут возникнуть, например, из файла конфигурации), но я, несомненно, что-то пропустил. Более того, это похоже на GLIB, но не в Glib :: ObjectBase, в котором говорится, что вы предпочитаете специализированное свойство _ (*) getter/setter вместо property_set/get_value.
Чтение документации о Glib :: Свойство Я не знаю, как должна выглядеть полная реализация свойств на C++, я полагаю, что отсутствие опыта работы с GLIB затрудняет ее работу.
Я хотел бы переместить каждое свойство как атрибут с стандом получить методы/набора, но я не хочу, чтобы сделать много изменений обнаруживая слишком поздно, что предыдущий Approch был раз лучше :)
Может кто-то объясняет мне, что такое свойство (по сравнению с атрибутом класса C++)? Можете ли вы предоставить мне пример рабочего свойства с сигналом/слотом? Может ли кто-нибудь рассказать о преимуществах двух способов?
Спасибо!
Спасибо за объяснение, я попытался завершить перенос кода на C++, но относительные версии привязок частично неполны, что делает его просто беспорядок! – Gianks