C# Vererbung/Benutzer

Status
Dieses Thema wurde gelöst! Zur Lösung gehen…

Rene42

Erfahrenes Mitglied
Guten Morgen,

heute habe ich mir C# angesehen.

Ich habe eine Klasse Einheit eingerichtet und eine Einheit Zeit.

Die Klasse Zeit erbt aus der Klasse Einheit.

In der Klasse Einheit habe ich den Operator + definiert.

Addiere ich nun zwei Objekte vom Typ Zeit, wird das Ergebnis Einheit (es sollte aber Zeit werden). Das verwirrt mich. Hier die Definition des Operators:

public static Einheit operator +(Einheit A, Einheit B) { //Rechne B in die Dimension von A um B.Umrechnen(A.Dimension); //Berechne die Werte und Erzeuge eine Einheit return new Einheit(A.Wert + B.Wert, A.Dimension); }

Definition der Klasse:
Code:
 class Zeit : Einheit
    {

        //Konstruktoren aus Einheit
        public Zeit() : base() { }
        public Zeit(double wert) : base(wert) { }
        public Zeit(double wert, string dimension) : base(wert, dimension) { }

        //Methoden
        public override List<string> Dimensionen()
        public override List<double> Faktoren()

    }
[/ICODE]
 

Spyke

Premium-User
du gibst beim operator direkt Einheit wieder zurück.

Am besten einen weiteren + operator der als Parameter Zeit hat (in der Zeit Klasse deklarieren)

Alles andere wäre wohl eher komplizierte das mit generic oder Reflection hinzufrimmeln.
Ich glaube ein cast operator hilft hier auch nicht so groß weiter.


Nachtrag/zur Info:
Statische Operatoren werden selbst nicht verbert, deshalb kennt dein + operator auch erstmal so die Klasse Zeit nicht, in der er ev. vermeintlich läuft.
Im Grunde sind operatoren ja nur statische Funktionen und statische Funktionen laufen in keiner Instanz.
 
Zuletzt bearbeitet:

Rene42

Erfahrenes Mitglied
Ok. Ich dachte irgendwie das sei der Vorteil bei der Vererbung, dass ich den Operator einmal definiere und er ist dann in allen Unterklassen verfügbar.
 
Status
Dieses Thema wurde gelöst! Zur Lösung gehen…

Neue Beiträge