Execute class from another
-
Hallo,
ich würde gerne in einer Klasse eine andere aufrufen, diese ausführen und das Ergebnis dann der ersten Klasse übergeben.
Kann mir einer sagen, welchen Befehl ich dafür brauche?Vielen Dank,
Gordon
-
Hallo,
Du kannst Klassen nicht ausführen, lediglich deren Memberfunktionen. Halte in der einen Klasse eine membervariable vom Typ der anderen Klassen. Dann kannst du darin aufrufen was du willst.
class A { public: void foo() {// irgendwas}; }; class B { private: A Avar; //Membervariable vom Typ A public: void bar() { Avar.foo(); // Aufruf der Memberfunktion von A } };
-
Naja einen "Befehl" wie du es dir vorstellst gibt es da nicht. Du musst dir dafür eine eigene Funktion schreiben die zum Beispiel ein Objekt der einen Klassen aufnimmt damit arbeitet und es zurückgibt. Möglichst sollte dann diese Funktion eine Methode deiner anderen Klassen sein. Ich hoffe ich habe dich richtig verstanden.
EDIT:Too Late

-
Hallo,
danke für die schnellen Antworten.
Ich werde mal versuchen mit diesen Membervariablen zu arbeiten.Vielleicht zur Motivation warum ich das machen will. Ich habe ein bestimmtes Programm, welches ich immer verwende und deshalb auch nicht verändern möchte. Nun wollte ich verschiedene Analysemodule entwickeln und je nach Bedarf verwenden nach dem Motto jetzt Analyse A.. usw.
Da ich diese häufig ändere, wollte ich sie eben nicht im Hauptcode haben.Grüße,
Gordon
-
Dafür könnte man auch ein Interface bereitstellen, und dann verschiedene Analysemodule implementieren, die dieses Interface befriedigen:
//das Interface struct Analyzer { virtual void analyze(AnalyzeDataType& data) = 0; }; //das "Hauptprogramm" class Hauptprogramm { public: //... void setAlanysizer(Analyzer& analyzer) { currentAnalyzer = &analyzer; } void someFunctionThatUsesTheAnalyzer() { currentAnalyzer->analyze(data); } //... private: Analyzer* currentAnalyzer; }; //ein Analyzer class AnalyzeTypeA : public Analyzer { //... void analyze(AnalyzeDataType& data) { //... } //... }; //noch ein Analyzer class AnalyzeTypeB : public Analyzer { //... void analyze(AnalyzeDataType& data) { //... } //... }; int main() { Hauptprogramm hpg; //... //AnalyzeTypeA benutzen AnalyzeTypeA anaA; hpg.setAlanysizer(anaA); //... //AnalyzeTypeB benutzen AnalyzeTypeB anaB; hpg.setAlanysizer(anaB); //... }
-
grobian schrieb:
ich würde gerne in einer Klasse eine andere aufrufen, diese ausführen und das Ergebnis dann der ersten Klasse übergeben.
Noch eine Anmerkung: Versuch dir mal den Unterschied zwischen Klassen und Objekten klar zu machen.
-
Hallo,
danke noch mal für die Antworten.

Wahrscheinlich war die Frage falsch formuliert.Grüße,
Gordon