virtuelle Funktionen
-
Hallo,
ich hoffe, ich blamiere mich jetzt nicht völlig, aber ich habe ein weiteres Problem:
Ich habe eine Klasse geschrieben
http://www.desy.de/~fischerg/C++Training/Hauptklasse
in der ich alles ausführen möchte. Ich habe hier header und cxx zusammengefasst.
In der Klasse "Klasse1"
http://www.desy.de/~fischerg/C++Training/Klasse1versuche ich nun etwas zu schreiben, was dann ausgeführt wird.
Im Moment, wenn ich die Hauptklasse (Execute) ausführe, dann erscheint
Test1
Test2
was ja schon mal schön ist.
Aber ich hätte gerne, dass auch Test3 aus dem Vehikel.cxx Code genommen wird und das ist das Problem. Wie kann ich denn den Hauptcode ausführen? Ich hatte schon einige Sachen ausprobiert, die ich aber lieber nicht hingeschrieben habe...;-)
Muss da noch ein extra Interface geschrieben werden oder geht es irgendwie "einfacher" auch wenn wahrscheinlich nicht wirklich schön....Vielen Dank,
Gordon
-
Moment, d.h. du hast also 2 Mainmethoden gebastelt und es sollen trotzdem beide ausgeführt werden?
-
Hallo,
das ist ein Problem....;-(
Eigentlich brauche ich nur eine Main Methode (im Hauptcode, oder?).
Das Problem wie ich in Vehikel.cxx die Sachen aufrufen kann.
Das verstehe ich nicht. Wenn ich "int main" nicht verwende, dann kommt "undefined reference to "main" oder so ähnlich...
Ich glaube, mir ist das Prinzip des Interfaces nicht ganz klar....;-(Grüße,
Gordon
-
du möchtest die methoden von Vehikel in Execute ausführen? man kann IN klassen inx ausführen man kann nur funktionen vom Objekt oder von der Klasse aufrufen lassen(wenn sie statisch sind). Aber ich verstehe die Problematik nicht gant

-
Ich glaube Dir ist das Prinzip eines Hauptprogramms nicht ganz klar...
Ein Programm darf immer nur eine main-Funktion haben. Pack doch 'cout << "Test3"' vor return 0 in die eigentliche main-Funktion und lösch die andere.
-
Hallo,
es ist ja richtig, dass ich Test3 auch in die eigentliche Main Funktion schreiben kann.
Das Problem ist, dass ich "verschiedene" Analysen (mit viel Code) brauche, die ich nicht in den Hauptcode stecken möchte, da ich diesen nicht groß verändern will.
Ich will eben gerade Test3 nicht im Hauptcode haben.....sondern als Funktion extra ausführen.Grüße,
Gordon
-
Ja und was spricht dagegen es als einen eigene Funktion zu schreiben?
void ausgabe() { std::cout<<"Test3 ? "<<std::endl; }??
-
Und wo binde ich die Funktion ein?
Grüße,
Gordon
-
du kannst dir eine .cpp schreiben in der du jegliche funktionen definierst und du schreibst dir dazu eine .h datei in der du die funktionen deklarierst
beispiel
Function.h
#ifndef FUNCTION_H #define FUNCTION_H void ausgabe(); #endif FUNCTION_Hfunction.cpp
#include "Function.h" #include<iostream> void ausgabe() { std::cout<<"hallo Test3"<<std::endl; }so und nun bindest du die .h in dein hauptprogramm ein und kannst ganz normal durch nennung des Funktionsnamen auf die Funktion zugreifen.
Ich denke du solltest das mit den Klassen erstmal lassen, ehe du die Aufteilung von Übersetzungseinheiten noch nicht verstanden hast, das ist nämlich sehr wichtig.
-
Hallo,
danke für die Hilfe...;-)
Grüße,
Gordon