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" angewendet

    public 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?


Anmelden zum Antworten