Virtuelle Methoden in abgeleiteten Klassen mit unterschiedlichen Parametern



  • Hallo, ich habe eine Klasse CInterface die abstrakt ist, es kann also keine Instanz davon erstellt werden. Ich möchte davon die Klassen CRs232 und CTcpIp ableiten. Nun möchte ich in CInterface eine virtuelle Funktion namens "Set" anlegen, die daraufhin in den abgeleiteten Klassen implementiert werden muss.
    Soweit alles kein Problem.
    Nun soll die Methode der Klasse CTcpIp aber mit anderen Parametern aufgerufen werden als die Methode gleichen namens der Klasse TcpIp.
    Ist das möglich ?
    Ich denke es wären zwei Ansätze denkbar:
    1. In der Basisklasse CInterface wird die Methode Set zweimal virtuell implementiert, jeweils mit den möglichen Parametern. Also überladen. Das hat den Nachteile, dass auch beide abgeleiteten Klassen jeweils beide Methoden aufweisen müssen.
    Oder ich definiere die Parameter als eine Union, und übergebe beim Aufruf dann eben einen Pointer auf diese Union.

    Wie denkt ihr darüber ? Welche Methode wäre besser, oder gibt es weitere Lösungswege ?

    Gruß
    Husky



  • Vielleicht wäre es allein richtig, verschiedene Konstruktoren zu haben.



  • *lol, jetzt hast Du meine ganzen Probleme, die ich gesehen habe, mit einem Schlag weggewischt.
    Sowas gehört sich doch nicht 🙂

    1000Dank für die Hilfe

    Greets
    Husky



  • Pfui, hoer auf mit den C-Praefixen!



  • Begründung siehe hier (oder UN generell hier).



  • Ein weiterer Grund gegen das "C":

    Wir lesen Texte nicht Buchstabe für Buchstabe, sondern das Auge hüpft von Wort zu Wort oder sogar noch weiter.

    Die Anfangsbuchstaben eines Wortes sind dabei diejenigen, die das Gehirn beim Lesen am schnellsten erkennt. Es gibt recht schöne Tests, die zeigen, dass man einen Text, bei dem nur die Anfangs- und Endbuchstaben richtig sind, die dazwischen jedoch verwürfelt, dennoch relativ schnell lesen kann. Deise Teorhie knan man shclnel ncahpüerfn.

    Wenn nun jede Klasse in einem Programm mit "C" beginnt, wird der eigentliche Klassenname dadurch in gewisser Weise in den Schatten gestellt. Das Gehirn ist langsamer, eine solche Klasse zu identifizieren. Das Überfliegen eines solchen Textes ist mühsamer. Das wirkt sich negativ aus, wenn man einen solchen Code erfassen oder prüfen muss.

    Code sollte immer so klar und deutlich wie möglich sein. Jeder Schnickschnack, der nicht wirklich etwas bringt, stört dabei.


Log in to reply