objekt instanzierung in einer klasse
-
hallo,
ich habe eine klasse a, in der ich eine instanz einer anderen klasse b verwenden will, d.h. das instanzierte objekt b soll allen methoden meiner klasse a zur verfügung stehen. wie mache ich so etwas.
sorry für die doofe frage
tobias
-
Du drückst dich noch etwas undeutlich aus. Lautet die Beziehugn zwischen A und B nun:
a) B ist ein A
b) B hat ein A?
MfG SideWinder
-
ich denke ich meine B hat ein A...
ich will in meiner klasse B EIN objekt der klasse b haben, auf das ich mit allen funktionen von B zugreifen kann.
hoffe das erklärt mein problem besser.
-
upps sorry ich meinte:
ich will in meiner klasse B EIN objekt der klasse A haben, auf das ich mit allen funktionen von B zugreifen kann.
-
Ich denke er meint eine Aggregation/Komposition.
class B { public: B(); ~B(); int foo(int a) { return a*10; } }; class A { B* _b; public: A() { _b = new B(); } ~A() { delete _b; } void func1() { int muh = _b->foo(11); } };(Das war übrigens eine Komposition *g*)
Als Alternative:
class B { public: B(); ~B(); int foo(int a) { return a*10; } }; class A { B _b; public: A() { } ~A() { } void func1() { int muh = _b.foo(11); } };Zum Unterschied: Stichwort Heap/Stack.
/edit: vertausche A und B und es stimmt wieder

-
cin schrieb:
Zum Unterschied: Stichwort Heap/Stack.

-
bluecode schrieb:
cin schrieb:
Zum Unterschied: Stichwort Heap/Stack.

ups, gilt natürlich nur, wenn er das Objekt von A auf dem Stack anlegt.
-
ja das ist das was ich will!
aber wenn ich das so implementiere bekomm ich ne fehlermeldung:enum { fftsize = 1024, }; class FFTReal { public: explicit FFTReal (const long length); }; class Cspectrum { FFTReal fft(fftsize); public: private: };dann meckert der Compiler: "expected ';' before '(' token" in der Zeile in der ich das Objekt instanziere (FFTReal ...)
und ich weiss nicht warum...?
-
class Cspectrum { FFTReal fft; // hier noch nix initialisieren public: private: }; ... Cspectrum::Cspectrum () : fft(fftsize) // Hier initialisiert man { }MfG SideWinder
-
vielen dank
funktioniert jetzt
