Funktion in einer Funktion aufrufen aber wie (Referenz)?.
-
newkid_ schrieb:
callback
funktionsmethoden2 gute stichwörter für google und co
ich glaub, er meint was andres als funktionszeiger, besonders wenn man das beispiel betrachtet...
-
Genau so eine art funktionszeiger, nicht die funktion die sich selber aufruft. geht das irgentwie.
-
Es muss...
void foo1(CLASS* Var) { Var->foo2();//Fatal Error }
... heißen und dann musst du halt so aufrufen:
CLASS TestClass; fool(&TestClass);
-
noe wieso?
z.b.
void SetCallbackInClassB(void (*pFunc)(void *),void *pClass); // fkt + klasse ( in class b )
in classA aufrufen
SetCallbackInClassB( meinefkt , this);
-
Ich habe das jetzt so gemacht
void foo1(CLASS &Var) { CLASS KLO = Var; KLO.foo2();//Fatal Error }
Zwar nicht elegant aber egal. Mein programm ist sowieso zum kotzen. Wenn einer was besseres weis...
-
das soll gehen?????????
wieso ist das fatal error da drinnen?
hast du wirklich einen copyconstruktor für deine klasse KLO definiert damit du
CLASS KLO = Var;
machen kannst?
was willst du machen
ClassA und ClassB
jetzt willst du eine methode ( nicht statisch ) von ClassB z.b. in ClassA aufrufen?dann musst meinen vorschlag nehmen
-
PS: hast du
DarkLord
vorschalg ausprobiert? ne nee?
PSS: hab dich doch falsch verstanden gehabt
-
Die funktion ist in wirklichkeit ein operator<<(fstream &file, LTR &In) und ich glaube kaum das ich das so umschreiben kan operator<<(fstream &file, LTR *ln) oder geht das doch irgentwie?. Sonst keine frage würde ich sowieso DarkLord vorschlag mahen (referenzen sind scheiße). Ja, Copikonstruktoren sind serienmessig in meinen programmen.
-
also ob referenzen oder zeiger benutzt werden ist echt total egal.
aber was ich mich frage ist:
Var.foo2();
was ist foo2? ist das eine normale funktion?
ein funktionszeiger?
ein methodenzeiger?
irgendein functor(also ein funktionsobjekt)?deine posts geben in der hinsich garnichts her
-
Die funktion ist die
friend ofstream &operator<<(ofstream &foutput, CLIENT &rhs) { CLIENT Test; Test = rhs; if(Test.TestEmpty()) {foutput << rhs.itsATNumber << rhs.itsFirstName << rhs.itsLastName << rhs.itsStreet << rhs.itsStreetNumber << " " << rhs.itsZipCode << " " << rhs.itsStatus << '\n';} return foutput;}
TestEmpty()
bool CLIENT::TestEmpty(void) return (this->itsATNumber.GetBuilted()) || (this->itsFirstName.GetBuilted()) || (this->itsLastName.GetBuilted()) || (this->itsStreet.GetBuilted()); }
GetBuilted
bool BSTR::GetBuilted(void) { return this->itsBuilted; }
-
Master User schrieb:
Die funktion ist die
friend ofstream &operator<<(ofstream &foutput, CLIENT &rhs) { CLIENT Test; Test = rhs; if(Test.TestEmpty()) {foutput << rhs.itsATNumber << rhs.itsFirstName << rhs.itsLastName << rhs.itsStreet << rhs.itsStreetNumber << " " << rhs.itsZipCode << " " << rhs.itsStatus << '\n';} return foutput;}
TestEmpty()
bool CLIENT::TestEmpty(void) return (this->itsATNumber.GetBuilted()) || (this->itsFirstName.GetBuilted()) || (this->itsLastName.GetBuilted()) || (this->itsStreet.GetBuilted()); }
GetBuilted
bool BSTR::GetBuilted(void) { return this->itsBuilted; }
Wozu die ganze Kopiererei? Warum arbeitest du nicht direkt mit der Referenz???
CLIENT Test; Test = rhs;
wenn du's kopierst, ist doch dasselbe als ob du den Parameter "by value" übergibst.
Dann meiner Meinung nach lieber so:friend ofstream &operator<<(ofstream &foutput, [b]const[/b] CLIENT &rhs)
und dann mit der Referenz weiter arbeiten für den TestEmpty().
Was den Copy Konstruktor angeht bin ich aber deiner Meinung. Eine Klasse sollte einen Copy Konstruktor und einen Zuweisungsoperator definiert haben damit man nicht mit denen die vom Compiler erstellt werden arbeiten muss (jedenfalls wenn man kompliziertere Daten in der Klasse hat, nicht unbedingt zu machen für 2 private: int x,y;)
Nik0n