Complex: Operator - Überladung für *



  • danke euch

    Hmm....
    wohin gehört das denn? In die structure rein oder in die Template Klasse?

    Ich kriege beide male folgenden Fehler:

    Fehler: »const COMPLEX Class<T>::operator*(const COMPLEX&, const COMPLEX&) [with T = double]« muss entweder null oder ein Argument nehmen
    

    ich weiß dass es einen comlex typ gibt aber ich habe es bewusst selber gemacht 🙂



  • camper schrieb:

    😮

    Bezieht sich das auf die falsche mathematische Multiplikation 🙂 oder darauf das ich versucht habe, diese Schreibweise:

    COMPLEX aa = { 5, 5 };
    

    irgendwie als return hinzubekommen ? ( Ein struct mit C'tor wäre schöner dafür )



  • Mati schrieb:

    wohin gehört das denn? In die structure rein oder in die Template Klasse?

    In keins von beiden :), sollte global sein ...



  • 😮
    Was echt? Bin überrascht....also global über einer Klasse wie z.B ein struct?



  • Ja im Endeffekt ist es eine Funktion die von operator* aufgerufen wird und wenn du diese Funktion überall benutzen willst, was üblich für op* sein sollte, dann muss sie halt global irgendwo stehen, wo der Compiler sie finden kann.



  • argh....jetzt kriege ich multiple definitions of operator *...

    kann es sein wenn ich einen Pointer auf einen COMPLEX typ anlege dieser mit der multiplikation durcheinanderkommmt?

    also sowas?

    COMPLEX* a = ....
    

    was tun?



  • Mati schrieb:

    argh....jetzt kriege ich multiple definitions of operator *...

    Vermutlich ODR verletzt - zieh die Implementierungen aus den Headern heraus oder mach sie inline (ist aber kein operator-Problem).

    kann es sein wenn ich einen Pointer auf einen COMPLEX typ anlege dieser mit der multiplikation durcheinanderkommmt?

    Nein.



  • Mati schrieb:

    was tun?

    Kein "unnötigen" Pointer benutzen 😉
    Und zeig mal bitte, wie dein Code momentan aussieht.



  • Jap, inline wars....jetzt muss ich nur noch rausfinden warum....?

    Die pointer sind leider Notwendig...und der code würde so wie er vorliegt wohl den rahmen sprengen...

    in der main (wo der compiler mit multiple schreit) steht im grunde nur:

    Matrix<COMPLEX> *A_COMPLEX = NULL;

    ...also ich weiß net...aber mit inline gehts...



  • Mati schrieb:

    Jap, inline wars....jetzt muss ich nur noch rausfinden warum....?

    Weil sie, wenn sie im Header stehen, mehrfach definiert werden. Mit inline sagst du, diese Definitionen sind gleich.


Anmelden zum Antworten