Klassenmethoden auslagern
-
hi,
ich möchte einige Methoden einer Klasse der Übersichtlichkeit wegen in eine andere
Datei auslagern. Nun benutzen diese Methoden aber Objekte der Klasse, die Sie nun
nicht mehr kennen....
Kann jemand helfen?gruß FreeSilver
-
Naja, wenn die Funktion auf Attribute einer Instanz deiner Klasse zugreifen soll, dann ist es doch schon sinnvoll die Funktion als Member der Klasse zu implementieren.
Du kannst die Implementierungen der Member aber ohne weiteres von der Klassendeklaration trennen. Die Klassendeklaration kommt in einen Header und die Member in eine Codedatei.
//Headerdatei: Foo.hpp class Foo { unsigned int bar; public: void do_stuff(); //nur deklariert, implementation in der Codedatei };//Codedatei: Foo.cpp #include "Foo.hpp" void Foo::do_stuff() { // hier dein Code }
-
ja, das ist schon klar, nur ich will keine extra klasse für die methoden anlegen, ehen ein "Methodendatei" ähnlich wie ne lib
-
Etwas Context?

#include doch in der Datei, in der Du die Methoden auslagerst auch den Header für die Klasse. Dann sollte der Objekttyp wieder bekannt sein

-
Hab ich bereits
#include EMMA_Image.h
void gaussFilterImage(EMMA_Image &image, ... );
EMMA_Image ist meine Klasse
Fehler ist : error C2039: 'gaussFilterImage' : is not a member of 'EMMA_Image'
Nächster Fehler : 'EMMA_Image' : is not a class or namespace name
-
Die Klasse hattest du doch schon vorher, oder etwa nicht? Ansonsten kannst du auch nur den Header (mit deinen Klassendeklarationen) an den Anfang der Lib includen:
//foo.h class Foo { unsigned int bar; public: void do_stuff(); //nur deklariert, implementation in der Codedatei unsigned int getval() const; }; //foo.cpp #include "foo.h" void Foo::do_stuff() { //... } unsigned int Foo::getval() const {return bar;} //lib.h #include "foo.h" Foo getSomeFoo(); void printFoo(const Foo& f); //... //lib.cpp #include "lib.h" Foo getSomeFoo() { return Foo(); } void printFoo(const Foo& f); { cout<<"Foo Object:"<<f.bar<<endl; }
-
Ja, genau so hatte ich es eigentlich gemacht, nur
bei//lib.h
#include "foo.h"
Foo getSomeFoo();
void printFoo(const Foo& f);
//...ist getSomeFoo() kein Member und Foo& f kennt er auch nit
-
Also da hast du irgendetwas falsch gemacht. Wieso sollte getSomeFoo() ein Member sein?
(schau mal nach, ob du eventuell die Klassendeklaration verhunzt hast, ein fehlendes ; am Ende kann man z.B. leicht übersehen)
-
ok, thx für die hilfe