Der Operator "*" kann nicht auf Operanden vom Typ "double" und "complexDLL.complex" angewendet werden
-
Hallo
Ich habe für dieses Programm eine 3 Klassen mit Polynomen, eine mit realen (polynom) Zahlen eine mit complexen Zahlen (Cpolynom) und eine mit Quaternionen (Qpolynom). C- und Qpolynom sind abgeleitete Klassen von polynom.
Die dazugehörigen Klassen für komplexe Zahlen(complexDLL) und Quaternionen(HamiltonDLL) habe ich eingebunden. In complexDLL habe ich den Operator* für complex*complex und double*complex definiert.
Es kommt aber trotzdem dieserFehler:
Fehler 1 Der Operator "*" kann nicht auf Operanden vom Typ "double" und "complexDLL.complex" angewendetpublic Cpolynom diff(Cpolynom p) { complex[] e = new complex[p.grad]; for (int i = 0; i < p.grad; i++) { e[i] =Convert.ToDouble(i+1) * p.Ckoeff[i + 1]; } Cpolynom ergp = new Cpolynom(e); return (ergp); }
Ckoeff sind die komplexen Koeffizenten des Polynoms.
-
Zeig mal die Operatordefinitionen
-
So abhe ich Operator* definiert:
public static complex operator *(complex z1, complex z2) { return (new complex(z1.re*z2.re-z1.im*z2.im,z1.re*z2.im+z1.im*z2.re)); } //-- public static complex operator *(complex k, double d) { return (new complex(k.re * d, k.im*d)); } //-- public static complex operator *(double d,complex k) { return (new complex(k.re*d, k.im*d)); }
-
Sieht eig. ok aus... die richtige DLL ist referenziert und p.Ckoeff[] liefert auch ein complex zurück?