Wie klassenfremde Funktion in einer Klasse aufrufen?
-
Hallo,
ich suche nach einer Möglichkeit, mit der ich Funktionen aus dem
main-Programm in meiner Funktion aus meiner Klasse aufrufen kann.Beispiel:
int ClassXY::method(); { string str; function(str); //? };void function(string x) { //do something } int main() { ClassXY myClass; myClass.method(); }Evt. könnte die Lösung sein, method() mit Eingabeparameter auszustatten, die gleichzeitig auch Ausgabe-Parameter sind. Hab das schon ein paar Male gesehen.
int main() { sting inout ClassXY myClass; myClass.method(&inout); function(inout); }Aber wie das genau funktioniert, weiß ich leider nicht.
Oder irgendwie Vererben?
Der Rückgabeparameter ist leider schon belegt. Und method() in eine eigene Klasse auszulagern ist sehr aufwendig. Habe das Programm nicht geschrieben, soll es lediglich erweitern.
Über Hilfe würde ich mich freuen!
Gruß
-
du deklarierst einfache void function(string x); in einer headerdatei und bindest die mit ein - feddisch.
-
Das eigentliche Problem hier ist nicht, dass die Funktion nicht zugänglich wäre, sondern nur, dass du das dem Compiler nicht mitteilst, dass es so ist.

Um ihm das aber in der anderen Übersetzungseinheit mitzuteilen, kannst du das machen, was der Vorposter von mir empfiehlt:
#ifndef MY_HEADERGUARD #define MY_HEADERGUARD void function(string x); #endifUnd diese Datei bindest du in der Quelldatei ein, wo du sie benutzen willst.
Üblicherweise werden die Funktionen aber auch in eigenen Quelldateien definiert. So, dass man sie gut auch für ein anderes Projekt benutzen kann, ohne, dass man Code verändern muss.
-
funktioniert, herzlichen Dank!