private methode aus klasse in headerdatei implementieren
-
hi,
mein problem ist, dass ich in meiner headerdatei eine methode als private deklariert habe und diese in einer anderen datei implementieren möchte, sodass keine implementierung in der headerdatei steht.
da diese ja private ist, kann ich ja nur aus der klasse selber drauf zugreifen, also müsste ich sie ja in der headerdatei implementieren, was ich nicht möchte.von meiner überlegung her, müsste ich demnach auf eine andere methode der gleichen klasse zugreifen, die ich auf public gesetzt habe, welche dann auf die private methode zugreift und diese implementiert?! das müsste ja gehen, da sie dann in der gleichen klasse stehen oder?!
class Rational { private: long zaehler, nenner; long ggT (long a,long b) { if (b == 0) return a; else return ggT(a,a%b); } public: Rational(); Rational(long z, long n); Rational(long gz); // für Ganzzahlen Rational(const Rational& r); // Kopierkonstruktor void add(Rational& a, Rational& b); void sub(Rational& a, Rational& b); void mult(Rational& a, Rational& b); void div(Rational& a, Rational& b); void set(long z, long n); void kehrwert(); void kuerzen(); void ausgabe(); };die methode ggT würde ich demnach gerne in meiner implementierungsdatei stehen haben und oben nur den rumpf.
kann mir da jmd weiterhelfen?
dankehoffentlich versteht jmd, was ich meine

-
tut mir leid, das thema war ein wenig falsch formuliert.
-
petedeluxe2k schrieb:
da diese ja private ist, kann ich ja nur aus der klasse selber drauf zugreifen, also müsste ich sie ja in der headerdatei implementieren, was ich nicht möchte.
Nein, das ist falsch.
Dass die Methode privat ist, hat nichts mit Dateien zu tun, Du kannst sie trotzdem in einer anderen Datei implementieren, genauso, wie man auch öffentliche Methoden dort implementieren würde.
-
C++ kennt Operatoren ...
-
ich dachte, dass ich bei private methoden nur innerhalb der selben klasse drauf zugreifen kann.
da ich hier die klasse in die headerdatei geschrieben hab, würde ich ja von außerhalb der klasse drauf zugreifen müssen?!
versteh ich da was falsch?
-
offensichtlich verstehst du da was falsch. "nur aus der klasse drauf zugreifen" beideutet, dass nur die klasse selbst diese methode aussführen kann. Das bedeutet aber nicht, dass du nur in derselben headerdatei darauf zugreifen kannst. Klassenmethoden, die man nicht sofort in der klassendefinition definiert, werde so definiert:
//klassendefinition class C { public: void f(); private: void g(); }; //Methodendefinition: void C::f() { /*...*/ } void C::g() { /*...*/ }Dabei ist dem Compiler völlig wurscht, wo du die einzelnen Methodendefinitionen hinschreibst, er muss sie nur beim Linken schonmal irgendwo in objektcode übersetzt haben, sonst meckert er.
-
schon eine halbe stunde später hab ich die antwort auf meine frage.
jetzt weiss ich wenigstens auch, wo mein denkfehler lag.vielen dank! das hat mir sehr zum verständnis beigetragen!