000
01.10.2008, 22:46 Uhr
stephanw
localhorst
|
Hallo,
gegeben ist eine Bibliotheksklasse:
C++: |
class Foo { public: void setValue(int x); int getValue() const; };
|
Da mir die Schnittstelle nicht gefällt, habe ich eine Wrapper-Klasse:
C++: |
class MyFoo { const Foo* object_; public: MyFoo(const Foo* object) : object_(object) {} int myGetValue() const { return object_->getValue(); } };
|
Die Funktion myGetValue() ist kein Problem, denn *object_ ist konstant und dessen Funktion getValue() passt dazu.
Wenn ich aber auch eine Funktion mySetValue(int) in der Wrapper-Klasse anbieten will, habe ich ein Problem: um *object_ ändern zu können, muss ich auf das "const" verzichten:
C++: |
class MyFoo { Foo* object_; // nicht const public: MyFoo(Foo* object) // nicht const : object_(object) {} void mySetValue(int v) { object_->setValue(v); } ... };
|
Das gefällt mir aber nicht, da ich nun keinen Wrapper mehr anlegen kann, wenn ich nur ein "const Foo*" habe, also schon das Originalobjekt nur lesen darf.
Gibt es eine Lösung, die beides unter einen Hut bringt ?
Grüße, Stephan. -- Reden ist Schweigen und Silber ist Gold. Dieser Post wurde am 01.10.2008 um 22:52 Uhr von stephanw editiert. |