我想重新實現一組使用GLIBMM的C++ GLIB類。 其中大多數是bug,需要擴展很多,因爲整個項目都是用C++完成的,所以在更正它之前,我首選移植代碼。gblimm/gtkmm自定義屬性
不幸的是,我不是GLIB的專家,即使我在官方文檔上花費了很多天,我仍然在理解一些概念方面遇到麻煩,特別是在屬性周圍。
據我所知,屬性是一個完整的替代(也許更多)的setter和getters。基本上,不是對每個屬性使用專門的方法,而是爲所有這些方法使用通用的set/get_property方法,使用名稱(或ID)訪問屬性並使用像GValue這樣的容器來保存多種類型的數據。
我能看到的唯一好處是能夠訪問包含在字符串中的名稱的屬性(可能來自配置文件),但我肯定錯過了一些東西。此外,這在GLIB中似乎是正確的,但在Glib :: ObjectBase中並不是這樣,它表示您應該更喜歡使用專用屬性_(*)getter/setter而不是property_set/get_value。
閱讀關於Glib :: Property的文檔我不確定C++中完整的屬性實現應該如何,我認爲缺乏GLIB的經驗會讓它更難。
我想每個屬性移動與性病屬性get/set方法,但我不想做了很大的改動發現爲時已晚,以前的計算策略是更好的時代:)
燦有人向我解釋屬性是什麼(如果與C++類屬性相比)?你能給我提供一個信號/插槽工作屬性的例子嗎?有人可以說明兩種方式的優點嗎?
謝謝!
感謝您的解釋,我試圖完成在C++中移植代碼,但綁定的相關版本部分不完整,使其只是一團糟! – Gianks