Probleme bei einer Kampfsimulation



  • Hallo zusammen!

    Nachdem ich sehr lange nicht mehr programmiert habe, aus Zeitmangel usw, habe ich mich jetzt mal wieder an eine Aufgabe gesetzt:

    Hier erst mal eine grobe Beschreibung:
    Es ist ein Kampfsimulator zu einem Spiel. In diesem Spiel gibt es verschiedene Raumschiffe und Geschütze. Des Weiteren gibt es eine ganze Reihe verschiedener Waffen mit unterschiedlichen Eigenschaften. Diese Waffen sind in unterschiedlicher Menge auf den verschiedenen Schiffen und Geschützen montiert.

    Wenn sich jetzt die verschiedenen Einheiten im Kampf gegenüber stehen, so schießen dieses natürlich nicht willt aufeinander. Das Ziel wird über eine Prioritätenliste der Waffe ausgewählt. Jede Waffe hat halt ein Lieblingsziel, auf das es als erstes schießt.

    Nun habe ich mir erst mal eine Basisklasse für die Raumschiffe/Geschütze geschrieben und eine für die Waffen. Die Klasse für die Raumschiffe erbt von der Basis- und von der Waffenklasse (Da dass Schiff ja mit den Waffen ausgestattet ist).

    Nun zu einigen "Problemen" die ich habe. Da ja jedes Raumschiff/Geschütz auch mehrere Waffen eines Typs und auch mehrere verschiedene Waffentypen haben kann muss ich dies ja irgendwie meiner Schiffs/Geschütz-Klasse mitteilen. Ein Array der Instanz der Waffenklasse innerhalb der Schiffsklasse ist ja nicht möglich. Da ich ja vorher nicht weiß wie groß das Array sein wird. Also dachte ich, dass ich dafür einfach ein vector nehme. Somit kann ich bei der Erzeugung meines Schiffes/Geschützes (Instanz) über den vector angeben wie viele verschiedene Typen von Waffen es gibt. Und für die Anzahl jeder einzelnen Waffe habe ich eine einfache int Variable in der Waffen-Klasse.

    Nun das Problem der Prioritäten. Da saß ich auch ne Zeit dran bis mir eine "Lösung" eingefallen ist. Die Prioritäten möchte ich einfach in ein Array packen. Array kann ich hier ja nehmen, da ich genau weiß wie groß es sein muss. Das erste Element des Array ist dann auch einfach das erste Ziel der Waffe. Nun sind aber natürlich nicht in jedem Kampf alle Waffengattungen vorhanden (und es wirken ja auch noch andere Einflüsse 😉 ). Die Einheiten jeder Seite (Angreifer und Opfer) kommen in eine "Flotte". Nun muss ja z.B. die große Kanone meines Kampfkreuzers anhand seiner Prioritätenliste und der vorhandenen Gegner, sein Ziel auswählen. Dafür dachte ich mir, dass ich einfach in einer for-Schleife, nacheinander die Einträge der Prioliste mit der gegnerischen Flotte vergleiche. Ist z.B. direkt ein Gegner vorhanden, der ganz oben auf der Prioritätenliste steht, so kann der Schaden berechnet werden und dem gegnerischen Schiff zugewiesen werden.

    So, ich hoffe dass ist jetzt nicht zu verwirrend! Und ich hoffe auch, dass ich nicht irgendwelche Fachbegriffe durcheinander gebracht habe. Wie gesagt, es ist ne ganze Zeit her, seitdem ich das letze mal was programmiert habe. Ihr werdet euch auch sicherlich Fragen, warum ich hier einen so elend langen Text rein setze und nicht einfach nen Quelltext. Da ich ja, wie schon gesagt, teilweise ziemlich lange gebraucht habe um eine Lösung für das jeweilige Problem zu finden, bin ich mir nicht sicher ob es so überhaupt sinnvoll ist, so wie ich es gemacht habe. Oder ob es eine viel einfachere Möglichkeit gibt dies umzusetzen. Ich möchte halt nicht einfach nen Quelltext posten, wo dann jemand anderes einfach ne bessere Variante zu macht, welche ich dann einsetze. Vielmehr brauche ich einfach ein paar Tips, wie man es evtl besser machen könnte 😃

    Vielen Danke fürs Lesen

    Gruß Spartaner



  • Hallo

    Spartaner schrieb:

    Nun habe ich mir erst mal eine Basisklasse für die Raumschiffe/Geschütze geschrieben und eine für die Waffen. Die Klasse für die Raumschiffe erbt von der Basis- und von der Waffenklasse (Da dass Schiff ja mit den Waffen ausgestattet ist).

    Habe nur bis hier gelesen, aber wenn die Waffen Bestandteil eines Schiffes sind, solltest du das Schiff nicht von den waffen erben lassen, weil das "ist ein2 bedeutet, sondern die sollten Membervariabeln von Schiff sein.

    chrische



  • Wow, Danke für die schnelle Antwort, selbst wenn du nicht alles gelesen hast.

    chrische5 schrieb:

    aber wenn die Waffen Bestandteil eines Schiffes sind, solltest du das Schiff nicht von den waffen erben lassen, weil das "ist ein2 bedeutet, sondern die sollten Membervariabeln von Schiff sein.

    Ich denke, dass du selber drauf kommen wirst, dass dies so nicht möglich ist, wenn du noch weiter liest. 😉 Aber wenn ich die Eigenschaften der Waffe als Membervariablen des Raumschiffes einfüge, müsste ich dies auch in der Klasse für die Geschütze machen. Also wäre es da wieder sinnvoller, wenn ich es in meine Basisklasse einfügen würde. Allerdings würde ich dann vor dem Problem stehen, dass ich ein Raumschiff/Geschütz nicht mit mehreren verschiedenen Waffentypen ausstatten kann. Sondern nur ein Waffentyp, welcher allerdings mehrfach vorhanden sein könnte.



  • Ich schließe mich meinem Vorredner an - die Schiffe haben keinen Grund, von der Basis-Waffe zu erben. Stattdessen benötigt ein Schiff einen vector<weapon_base*> mit allen (einsatzbereiten) Waffen - die einzelnen Waffen (Laser, Kanone, Photonentorpedo,...) erben von weapon_base und überschreiben deren Methoden zur Zielauswahl und zum Schießen (Polymorphie).

    Den Absatz mit den Prioritäten müsstest du nochmal genauer erklären - aber vermutlich läuft das auf double-Dispatching hinaus.
    (eine primitive Lösung wäre es, daß das Schiff anhand der Stärke und Waffentyp das Schadenspotential abschätzen kann (z.B. Schlachtschiffe sind schwerfälliger und stufen deshalb Torpedo-Angriffe als gefährlicher ein) - die Waffe fragt dann alle gegnerischen Schiffe ab, wie gefährlich sie eingeschätzt wird, und schießt auf das empfindlichste Schiff)

    Spartaner schrieb:

    Ich denke, dass du selber drauf kommen wirst, dass dies so nicht möglich ist, wenn du noch weiter liest. 😉 Aber wenn ich die Eigenschaften der Waffe als Membervariablen des Raumschiffes einfüge, müsste ich dies auch in der Klasse für die Geschütze machen. Also wäre es da wieder sinnvoller, wenn ich es in meine Basisklasse einfügen würde. Allerdings würde ich dann vor dem Problem stehen, dass ich ein Raumschiff/Geschütz nicht mit mehreren verschiedenen Waffentypen ausstatten kann. Sondern nur ein Waffentyp, welcher allerdings mehrfach vorhanden sein könnte.

    Klar kannst du in einem Schiff mehrere Waffentypen kombinieren - Stichwort Polymorhpie (siehe oben).



  • CStoll schrieb:

    Ich schließe mich meinem Vorredner an - die Schiffe haben keinen Grund, von der Basis-Waffe zu erben. Stattdessen benötigt ein Schiff einen vector<weapon_base*> mit allen (einsatzbereiten) Waffen

    Stimmt, da war ich ja total auf dem Holzweg. Wenn ich das jetzt so lese frage ich mich auch, warum meine Schiffsklasse von der Waffenklasse erben sollte. Es reicht ja, wenn ich in meiner Waffenklasse eine Variable für die Anzahl der einzelnen Waffen habe und jedes Element des vector stellt dann einen Waffentyp dar.

    CStoll schrieb:

    - die einzelnen Waffen (Laser, Kanone, Photonentorpedo,...) erben von weapon_base und überschreiben deren Methoden zur Zielauswahl und zum Schießen (Polymorphie).

    Ich bin mir nicht sicher, ob ich da wieder falsch liege. Ich denke, dass mir die Klasse c_weapon reicht. Da die ganzen verschiedenen Waffentypen alle die gleichen Eigenschaften und Funktionen haben (Schussfrequenz, Genauigkeit, Schaden, Reichweite, usw...). Der Unterschied liegt nur in den Werten für die einzelnen Eigenschaften. Also wäre es doch auch am sinnvollsten, wenn ich in der weapon Klasse dem Konstruktor sage, um welchen Typ es sich handelt und dieser somit die unterschiedlichen Werte setzt.

    CStoll schrieb:

    Den Absatz mit den Prioritäten müsstest du nochmal genauer erklären - aber vermutlich läuft das auf double-Dispatching hinaus.

    Ok, ich versuche es nochmal an einem kleinen Beispiel: (was ist double-Dispatching?)
    Waffentyp: Laser
    Prioritäten: Leichter Jäger, Korvette, Zerstörer, ... Raketenbasis, Panzerschiff, Gepanzerte Raketenbatterie. (einfach als Beispiel)
    Der Laser schießt also am liebsten auf Leichte Jäger, da diese aufgrund der Eigenschaften am anfälligsten dafür sind. Und die Gepanzerte Raketenbasis interessiert den Laser gar nicht, da er kaum/keinen Schaden daran ausrichten kann.

    So, jetzt habe ich also mein Verteidigungsgeschütz auf dem der Laser montiert ist. Die gegnerische Flotte besteht aus einem Zerstörer, einer Korvette und einem Panzerschiff.
    Die Schiffe(der Name/Typ) aus der Flotte sind in einem vector aus strings gespeichert (vector<string> Flotte;) . Die Prioritätenliste ist auch ein vector aus strings. (vector<string> Prio_Laser;)
    In der Prioritätenliste des Laser steht der Leichte Jäger ganz oben (Prio_Laser[1]) Jetzt wollte ich halt in einer for-Schleife das erste Element der Prio_Liste mit den Elementen des vectors Flotte vergleichen. In meinem Beispiel dürfte er natürlich den Leichten Jäger nicht finden, also wird nun das 2. Element der Prio_Liste mit den Elementen der Flotte verglichen. An der 2. Stelle der Prio_Liste steht die Korvette. Nach dem ersten durchlauf der for-Schleife wird die Korvette in der Flotte gefunden.
    Da ich nun weiß, dass die Korvette dass erste Ziel darstellt, kann ich nun die Funktion zur berechnung des Schadens aufrufen und ihr die Werte der Korvette und des Lasers übergeben. Ist der Schaden berechnet, subtrahiere ich den Wert einfach von der Hülle der Korvette.

    😕 Oh man, ich hoffe das war jetzt verständlich!



  • Hallo!

    Meine vorherigen Fragen, gingen ja eher darum, wie ich mein Projekt am besten umsetzen kann. Aber nun habe ich ein Problem, bei dem ich nicht mehr weiß was ich noch machen soll. Wie ich ja bereits geschrieben habe, bin ich nicht unbedingt ein Profi im programmieren und dieses Projekt ist auch mein erstes in dem mehrere verschiedene Klassen vorhanden sind. Damit das ganze schön übersichtlich bleibt, habe ich meine Klassen natürlich alle schön in Header und cpp aufgeteilt. Hier erst mal wie es bei mir aussieht:

    // main.cpp
    
    #include <iostream>
    using namespace std;
    #include <string>
    
    #include "c_ship.hpp"
    
    // -------------
    // Schiff erstellen
    int main()
    {
       c_ship ship1;
          ship1.set_agility(100);
          cout << "Agility Ship 1: "  << get_agility() << endl;
    
       // ...
    
    }
    
    // c_basis.hpp
    
    #include <string>
    
    // c_basis.cpp
    
    #include <iostream>
    using namespace std;
    #include <string>
    
    #include "c_basis.hpp"
    
    // c_ship.hpp
    
    #include "c_basis.hpp"
    
    class c_ship : public c_basis
    {
       // ...
    }
    
    // c_ship.cpp
    
    #include "c_ship.hpp"
    

    So, das Schiff in main.cpp kann ich ohne Probleme erstellen. Ich bekomme sogar die Programmierhilfe angezeigt, in der alle Memberfunktionen aufgelistet sind. (Die der Basisklasse und der Schiffsklasse --> so solls ja auch sein)

    Will ich nun alles erstellen so bekomme ich folgende Fehlermeldung:
    unresolved external 'c_basis::get_agility()' referenced from /.../ main.obj
    und das gleiche für die set_agility()

    Das ist nun die Fehlermeldung die ich nach meinen letzten Änderungen bekomme.
    Eigentlich hatte ich in der Klasse c_ship noch einen Konstruktor, dem ich ein string übergeben. Dieser string sollte in einer switch Anweisung ausgewertet werden. Der string beinhaltet den Typ des Raumschiffes. So sollte dann im Konstruktor, halt je nach übergebenen Typ, die Membervariablen mit verschiedenen Werten zugewiesen werden. Mit dieser Variante habe ich allerdings über 50 Fehlermeldungen erhalten. Alle bezogen sich in irgendeiner Weise auf das string, welches ich dem Konstruktor der Schiffsklasse übergeben habe. Außerdem habe ich auch in der Basisklasse ein string deklariert. Dort bekomme ich auch eine Fehlermeldung, dass string ein unbekannter Bezeichner wäre (wenn ich mich richtig erinnere) und halt ein Variablentyp angegeben werden muss.

    Ich gehe davon aus, dass die Probleme in irgendeiner Weise mit meinen includes zusammen hängen. Da ich auch einfach alles in die main.cpp kopiert hatte. Dort lief es ohne Probleme, wenn ich in der Schiffsklasse den Konstruktor entfernt habe. War dieser vorhanden, so bekam ich die Fehlermeldung, dass ich switch nicht mit string nutzen kann. Dies verstehe ich zwar nicht, aber damit könnte man ja noch leben.

    Ich könnte natürlich hingehen und einfach alles in der main.cpp lassen, aber dies ist ja nicht gerade ein guter Stil. Und da dies mein erstes größeres Projekt ist, möchte ich es gleich richtig machen! Vor allem findet man sich so ja auch besser zurecht! 😃

    Könnt ihr mir bei meinem Problem helfen?



  • Hallo noch mal!

    Es ist mir durchaus bewusst, dass man in einem Forum nicht sofort eine Antwort auf seine Fragen bekommt. Aber da ich hier ja sehe, dass praktisch dauerhaft neue Beiträge im Forum auftauchen, frage ich mich doch, ob ich vielleicht irgendwas falsch gemacht habe, dass keine Antwort kommt.

    Hätte ich für meine letzte Frage vielleicht einen neuen Thread machen sollen? Oder habe ich einfach zuviel geschrieben, so dass keiner Lust hat sich das alles durch zu lesen? 😉

    Versteht das jetzt bitte nicht falsch! Das ist auf keinen Fall ein Angriff oder sonst irgendwas in der Art! Ich bin begeistert von diesem Forum! Hier bekommt man so viele Informationen...

    Bloß habe ich ein wenig Angst, dass meine Problem einfach untergeht, da es ja bereits nach ein paar Stunden schon nur noch auf Seite 2 vorhanden ist.

    Gruß Spartaner



  • Naja, du weisst halt anscheinend ziemlich viele grundlegende Sachen nicht. z.B. dass switch bloss mit integralen Typen funktioniert, also "integers", also auch nicht mit Strings.

    Weiters solltest du in der Lage sein eine einfache Fehlermeldung selbst zu lesen - sonst wirst du nicht weit kommen ohne bei jeder 10. Zeile um Hilfe fragen zu müssen.

    "unresolved external 'c_basis::get_agility()'" zum Beispiel heisst schlicht und einfach dass du c_basis::get_agility nicht definiert hast, sonst müsste es der Linker ja finden.

    Kurz gesagt: du kannst nicht C++. Und dir C++ beizubringen ist wohl etwas viel verlangt für einen Thread wo es um Waffen und Raumschiffe geht.



  • Dein Codebeispiel ist auch sehr knapp gehalten (wie mein Vorredner gesagt hat, du hast wohl get_agility() nicht definiert, was wir aber nicht sehen können da du nicht den ganzen "relevanten" Code gepostet hast).

    Es müsste auch nicht

    cout << "Agility Ship 1: "  << get_agility() << endl;
    

    heißen, sondern

    cout << "Agility Ship 1: "  << ship1.get_agility() << endl;
    


  • hustbaer schrieb:

    Naja, du weisst halt anscheinend ziemlich viele grundlegende Sachen nicht. z.B. dass switch bloss mit integralen Typen funktioniert, also "integers", also auch nicht mit Strings.

    Spartaner schrieb:

    Ich gehe davon aus, dass die Probleme in irgendeiner Weise mit meinen includes zusammen hängen. Da ich auch einfach alles in die main.cpp kopiert hatte. Dort lief es ohne Probleme, wenn ich in der Schiffsklasse den Konstruktor entfernt habe. War dieser vorhanden, so bekam ich die Fehlermeldung, dass ich switch nicht mit string nutzen kann. Dies verstehe ich zwar nicht, aber damit könnte man ja noch leben.

    Wie ich bereits anfangs mehrfach gesgt habe, habe ich sehr lange nicht mehr programmiert, mehr als 3 Jahre nicht. Da kann man schonmal was vergessen. Nachdem ich das ganze in dem Visual C++ Express ausprobiert hatte, ist es mir auch aufgefallen, da dort die Fehlermeldung eindeutiger/besser zu verstehen war.

    hustbaer schrieb:

    Weiters solltest du in der Lage sein eine einfache Fehlermeldung selbst zu lesen - sonst wirst du nicht weit kommen ohne bei jeder 10. Zeile um Hilfe fragen zu müssen.

    Tut mir leid, aber so eine Aussage halte ich für absolut überflüssig! Dürfen hier im Forum also nur Leute Fragen stellen, die Informatik studiert haben und in einer großen Softwareschmiede arbeiten?

    hustbaer schrieb:

    "unresolved external 'c_basis::get_agility()'" zum Beispiel heisst schlicht und einfach dass du c_basis::get_agility nicht definiert hast, sonst müsste es der Linker ja finden.

    Spartaner schrieb:

    Da ich auch einfach alles in die main.cpp kopiert hatte. Dort lief es ohne Probleme,...

    So, wenn du richtig gelesen hättest, wüsstest du, dass ich die Funktionen definiert hätte. Warum sollte es sonst funktionieren, wenn alles in der main.cpp sitzt und nicht auf die verschiedenen Dcteien aufgeteilt ist.

    hustbaer schrieb:

    Kurz gesagt: du kannst nicht C++. Und dir C++ beizubringen ist wohl etwas viel verlangt für einen Thread wo es um Waffen und Raumschiffe geht.

    Ich weiß nicht was du für Probleme hast. Aber in einem Forum kommen auch mal Fragen von Leuten die nicht programmieren konnten wie sie geboren wurden, sondern dies erst mal lernen müssen. Und dass du mir C++ beibringen sollst, habe ich auch nicht verlangt!

    @Chris++

    Die Ausgabe der Werte über cout ist von mir nur ein Tippfehler. Da ich nicht auf diesem Rechner programmieren sondern auf meinem Laptop. Da musste ich es neu schreiben.

    Und wie bereits gesagt, gehe ich davon aus, dass es mit den #includes zusammenhängt, da es ja funktioniert, wenn alles in der main.cpp ist.

    Aber hier noch mal das Beispiel, wie die funktionen definiert sind.

    // c_ship.cpp
    
    // ....
    
    c_ship::set_agility(int i_agi)
    {
       // ...
    
       m_agility = i_agi;
    }
    
    c_ship::get_agility()
    {
       return m_agility;
    }
    


  • Spartaner schrieb:

    So, wenn du richtig gelesen hättest, wüsstest du, dass ich die Funktionen definiert hätte. Warum sollte es sonst funktionieren, wenn alles in der main.cpp sitzt und nicht auf die verschiedenen Dcteien aufgeteilt ist.

    Warum funktioniert es denn dann nicht, wenn Du die Funktionen in einer im Projekt eingebundenen Datei definiert hättest?

    Mit den Includes hat das i.d.R. wenig zu tun, da der Linker sich um Includes garnicht schert. Ist denn die Datei c_ship.cpp auch im Projekt eingebunden? (Nicht nur im selben Ordner!)



  • Spartaner schrieb:

    hustbaer schrieb:

    "unresolved external 'c_basis::get_agility()'" zum Beispiel heisst schlicht und einfach dass du c_basis::get_agility nicht definiert hast, sonst müsste es der Linker ja finden.

    Spartaner schrieb:

    Da ich auch einfach alles in die main.cpp kopiert hatte. Dort lief es ohne Probleme,...

    So, wenn du richtig gelesen hättest, wüsstest du, dass ich die Funktionen definiert hätte. Warum sollte es sonst funktionieren, wenn alles in der main.cpp sitzt und nicht auf die verschiedenen Dcteien aufgeteilt ist.

    Der Linker durchsucht aber nicht die gesamte Festplatte nach seinen Funktionen - der nimmt sich nur die LIBs vor, die du ihm mitgegeben hast (und ein paar ausgewählte Standard-Bibliotheken). Das heißt, wenn du dein Programm auf mehrere CPPs verteilt hast, mußt du alle zusammen an den Compiler und Linker übergeben.
    (im MSVC sollten eigentlich alle CPP-Dateien im aktiven Projekt mitgelinkt, wenn du anfängst zu compilieren)



  • Wäre da nicht ein Returntyp angebracht? Und wenn nicht warum nicht?



  • Zunächst mal möchte ich mich dafür entschuldigen, falls mein vorheriger Post etwas zu hart rüber gekommen ist. Allerdings bin ich bei solchen Antworten immer ein wenig "genervt"!

    @ CStoll & LordJaxom: Ich habe da so viel rumprobiert und geändert, dass ich nicht mit Sicherheit sagen kann, dass bei dieser Fehlermeldung die c_ship.cpp wirklich im Projekt eingebunden war. Da bin ich mir einfach nicht mehr sicher! Das werde ich direkt nochmal ausprobieren. Allerdings hatte ich ja auch noch das Problem mit den strings (nicht im switch).

    Spartaner schrieb:

    Außerdem habe ich auch in der Basisklasse ein string deklariert. Dort bekomme ich auch eine Fehlermeldung, dass string ein unbekannter Bezeichner wäre (wenn ich mich richtig erinnere) und halt ein Variablentyp angegeben werden muss.

    So, nochmal rausgesucht...
    Kann dieses Problem evtl. damit zusammenhängen, dass ich die string.h ja in mehreren Dateien eingebunden habe? (s.o.)
    In der Zwischenzeit werde ich nochmal ein neues Projekt anlegen und dort alle zum Projekt gehörenden cpp einfügen. Und zusätzlich den Konstruktor mit einer if-Abfrage ausstatten.



  • Es heisst nicht <string.h> sondern <string> - zumindest wenn du das File der Standard Library meinst 😉
    Und du kannst die inkludieren so oft du willst, da sind "include guards" drin, das darf nix machen.

    Grundsätzlich... versuch mal alle "using namespace" wegzulassen, und überall std::string (bzw. std::vector, std::sort etc.) zu schreiben.
    Und überall wo du einen std::string verwendest muss natürlich auch vorher <string> inkludiert worden sein (entweder direkt oder indirekt).



  • Was die Fehlermeldung angeht: Schau nach, daß du

    a) den Prototypen der Funktion im Header der Ship-Klasse deklariert

    b) den Funktionskörper im Quellcode als zu Ship gehörig gekennzeichnet

    hast.

    Also:

    Ship.h

    class Ship
    {
     public: 
       getAgility();
    }
    

    Ship.cpp

    Ship::getAgility()
    {
     // do Stuff
    }
    


  • hustbaer schrieb:

    Es heisst nicht <string.h> sondern <string> - zumindest wenn du das File der Standard Library meinst

    ähmm, natürlich meine ich die <string> und nicht die <string.h> 😃

    Jetzt funktioniert alles einwandfrei! 🙂
    Also lag es wahrscheinlich nur daran, dass ich in der c_basis.hpp nicht using namespace std; eingegeben habe. Somit konnte er string ja nicht erkennen. Hätte ich dort einfach std::string eingegeben, dann hätte es auch funktioniert oder? Jetzt hab ich aber auf jeden Fall das using rausgenommen und über std:: genutzt.

    Vielen Dank für die Hilfe!!!

    Und nochmal wegen meiner vorherigen Frage wegen meiner Prioritätenliste. Was ist dieses double dispatching und, falls ihr es verstanden habt 😉 , ist meine vorgehensweise sinnvoll oder geht es besser?

    Gruß Spartaner



  • Double Dispatch heisst, daß die aufgerufene Methode eines Objekts nicht nur anhand des Objekttyps bestimmt wird, sondern auch anhand des Argumenttyps der Methode.

    Siehe auch http://www.eli.sdsu.edu/courses/spring03/cs535/notes/dispatch/dispatch.html


Anmelden zum Antworten