000
17.12.2006, 15:44 Uhr
(un)wissender
Niveauwart
|
Was meint ihr dazu? Erspart sehr viel Tipparbeit bei Standard-Getter/Setter. Nachteil: Präprozessor, implizit inline.
C++: |
#include <iostream>
//GS GetSimpleType #define GS(name, type) public: type name() const { return m_##name; } //GC GetComplexType #define GC(name, type) public: type const& name() const { return m_##name; } //SS SetSimpleType #define SS(name, type) public: void name(type val) { m_##name = val; } //SC SetComplexType #define SC(name, type) public: void name(type const& val) { m_##name = val; } //GSS GetSetSimpleType #define GSS(name, type) GS(name, type) SC(name, type) //GSC GetSetComplexType #define GSC(name, type) GC(name, type) SC(name, type)
class Simple { public: Simple(int v) : m_v(v) {} GSS(v, int) private: int m_v; } ;
class Complex { public: Complex(int v): m_s(v) {} GSC(s, Simple) private: Simple m_s; }; int main() { Simple s(3); std::cout << s.v() << '\n'; s.v(4); std::cout << s.v() << '\n'; Complex c(5); std::cout << c.s().v() << '\n'; c.s(s); std::cout << c.s().v() << '\n'; }
|
-- Wer früher stirbt ist länger tot. Dieser Post wurde am 17.12.2006 um 15:45 Uhr von (un)wissender editiert. |