Properties aus C# in C++?
-
Kennt ihr Lösungen (Websites, Papers, usw.) die Lösungen zeigen wie man Properties, wie man sie aus C# kennt am besten in C++ realisiert?
Eine mögliche Implementierung habe ich hier gefunden:
http://www.codeproject.com/KB/cpp/cppproperties.aspxclass PropTest { public: PropTest() { Count.setContainer(this); Count.setter(&PropTest::setCount); Count.getter(&PropTest::getCount); } property<PropTest,int,READ_WRITE> Count; private: int getCount(){return m_nCount;} void setCount(int nCount){ m_nCount = nCount;} int m_nCount; };was mir nicht an an der Lösung gefällt ist, das ich meine Getter und Setter nur selber schreiben will wenn dort etwas anderses gemacht wird wie return value; oder m_Var = value;
Außerdem nervt das ich im Konstruktor mein Property erst initialisieren muss setContainer(this); - das Setzten des Getters und Setters soll nur erforderlich sein wenn ich "spezielle" getter und setter haben die mehr als return value; oder m_Var = value; machen...
-
Imo realisiert man das am besten gar nicht in C++. Die Sprache unterstützt das nicht und das irgendwie reinzubasteln finde ich nicht geschickt und unnötig. Herkömliche Getter und Setter sind nicht unbedingt das beste, aber es ist deutlich schlechter eine Technik einer anderen Sprache in eine andere übertragen zu wollen.
Für was den ganzen Overhead und umstände? Wenn du das unbedingt willst, dann wärst du mit C# wahrscheinlich besser betan.
-
Das wurde kürzlich bereits in aller Ausführlichkeit hier besprochen.
Wenn du in C++ Properties benutzen willst und es dir nicht um ästhetische Vorzüge, sondern um Features wie RTTI, Persistenz etc. geht, dann mußt du auf eine proprietäre Lösung wie C++Builder (Properties im Delphi-Stil) oder C++/CLI (.NET, ähnlich C#) zurückgreifen.
Andernfalls rate ich wie drakon: laß es bleiben.
-
Es hat in der Vergangenheit viele Versuche gegeben das halbwegs elegant in standard C++ nachzubilden, soweit ich weiß sind alle gescheitert.