Designfrage
-
Abend,
angenommen ich habe sowas:
class Foo { public: static Foo** b; method(); };Da b public ist, kann man von außerhalb jetzt b manipulieren: Foo::b[n]->method();
Nun möchte ich b private machen, damit der Benutzer nicht mehr direkt auf b zugreifen kann. Dennoch soll der Benutzer in der Lage sein auf jedes Element von b die Methode method() aufzurufen.
Also er soll nach wie vor auf das n.te Element von b die Methode method() aufrufen können, nur eben nicht mehr direkt zugriff auf b haben. Wie wäre sowas umsetzbar?
-
Wenn es nur um die eine Methode (namens "methode") geht, dann vielleicht einfach eine Memberfunktion
Foo::execMethod( uint index )? Ansonsten kannst du einfach die statische Variable kapseln, alsoclass Foo { public: method(); Foo* getFoo( unsigned int nr ) { if ( nr > max ) return NULL; return b[nr]; } private: static Foo** b; };edit: Hatte nur ein Wort vergessen..
-
Es heisst "Foobar" und nicht Foo, vielleicht liegt hier auch der Fehler.
S. Wikipedia: http://de.wikipedia.org/wiki/FoobarWeitergehende Fragen gerne an mich per PM

-
Denkbar wäre auch die deklaration der Klasse Foo als singleton und dann die überladung des []-operators.
-
Badestrand schrieb:
Foo* getFoo( unsigned int nr ) { if ( nr > max ) return NULL; return b[nr]; }Badestrand, wieso ist bei dir
getFoo()keine statische Funktion?Basingstoke schrieb:
Denkbar wäre auch die deklaration der Klasse Foo als singleton und dann die überladung des []-operators.
Singleton finde ich jetzt ein wenig weit hergeholt...
Für die Speicherung der einzelnen Instanzen würde ich ausserdem STL-Container verwenden.
-
Nexus schrieb:
Badestrand, wieso ist bei dir
getFoo()keine statische Funktion?War ein Versehen
