Definieren von Operatoren



  • Hi,
    ich will mir einige Operatoren für Vektorberechnungen definieren.
    Es hat auch alles funktioniert, nur beim Kreuzprodukt bin ich mir da nicht sicher, ob ich das folgende machen kann.

    struct Vector3
    {
      double x,y,z;
      ........
    };
    
    Vector3 operatorx (const Vector3 &a) const;
    
    Vector3 Vector3::operatorx (const Vector3 &a) const
    {
      return((y*a.z-z*a.y),(z*a.x-x*a.z),(x*a.z-y*a.x));
    }
    

    Mich interessiert, ob es auch zulässig ist, Buchstaben als Operatoren zu definieren und wenn ja, ob ich noch etwas beachten muß.

    Danke



  • Mich interessiert, ob es auch zulässig ist, Buchstaben als Operatoren zu definieren und wenn ja, ob ich noch etwas beachten muß.

    Nein.



  • Ein WARUM wäre auch nett. 🙄



  • Ich glaub Operatoren sind schon vordefiniert, und koennen deshalb maximal ueberschrieben werden, aber keine neuen hinzugefuegt.

    Ausserdem, alles was als Opaerator gilt (+-=&<>) etc, darf nicht in Klassennamen/Variablennamen auftauchen.
    Stell dir vor, due kreierst nen Operator A unaer fuer MyClass!

    MyClass myobj(was_weiss_ich);
    MyClass Amyobj(myobj); // aehm, muesst er hier schon maulen ... das ist nimmer eindeutig
    
    myobject = Amyobject; // Und hier gehts erst recht in die Hose. Ist das nu ne Zuweisung von Amyobject, oder fuehrst operator A auf myobject aus und weisst myobject das zu ? Fragen, die dein Compiler ned beantworten kann ...
    

    Wenn dann Operatoren fuer alle buchstaben definiert hast, muesstest aber mega vorsichtig mit bezeichnern umgehen :p bzw. die auswahl der moeglichen Namen fuer variablen in deinem programm wuerde arg beschraenkt werden !!! :-)))

    Ciao ...



  • Ok, jetzt hats klick gemacht.

    DANKE



  • Ich persönlich würds net machen , aber du kannst ja den %-Operator dafür überladen, des sieht bißchen aus wie n X

    vec= vec1 % vec2



  • Wieso würdest Du es nicht machen?

    Ich habe jetzt das "^" überladen.



  • Es hat auch schon Scherzkekse gegeben die haben den + als - überladen,
    und umgekehrt. eigentlich sollte ein Operator immer
    das machen, für das er bestimmt ist, ansonsten wird der Code leicht unleserlich...

    Devil



  • weil ich wenn ich Operatoren überlade, darauf achte das der Operator eine sinngemäß ähnliche Bedeutung wie bei einem eingebauten Typ hat, ansonten halt ich das eher für verwirrend und willkürlich als nützlich



  • Ok, von der Warte her ist es klar.

    (Ist aber ne nette Idee die Operatoren mal zu tauschen 😃 )



  • @daishi

    wenn dein code niemand anders zu gesicht bekommt, ists doch egal :p

    Aber wenn man in gemeinsammen Projekten arbeitest ... und es Ploetzlich im Buero ruhig wird, wenn du den raum betrittst ...
    Wenn dann deine Kollegen an der Kaffemaschine werkeln und alle ploetzlich keinen Kaffee mehr trinken, die maschine aber noch voll ist ... also ich waer dann vorsichtig !!! 😃 😃 😃

    Ciao ...



  • @RHBaum
    Wegen des Kaffee's mache ich mir keine Sorgen. Meine Kolegen behaupten, es wäre Motorenöl, da ich ihn gerne stark trinke.

    Das tauschen der Operatoren, wäre ja auch nur eine Idee, wenn ich mal Quellcode weitergebe und verhindern will, das jemand ihn ausschlachtet.
    Bisher habe ich da eine andere Methode verwendet, ich habe angefangen alle Variablennamen und Funktionsnamen alphabetisch zu sortieren und dann wurden sie umbenannt.
    Da hat man dann recht schnell den Überblick verloren, da es nurnoch wilde Buchstabenketten sind, aus denen man die Funktion nicht ablesen kann.



  • Toll.
    Musstest du deinen Code schon mal nach einem halben Jahr warten ?
    Viel Spass...

    Devil



  • wenn ich mal Quellcode weitergebe und verhindern will, das jemand ihn ausschlachtet.

    Ist auch ned Sinn der sache ....

    Warum gibts quellcode weiter, wenn ned willst, dann andere ihn modifizieren ?
    Wenn nicht willst, das andere deinen quellcode durchstoebern, dann gib ihn ned raus. Dann gib binaercode raus.
    Das argument wegen benutzerdef uebersetzen, andere plattform etc. darf dann auch ned zaehlen, weil sowieso keiner anpassungen machen darf/sollte, ohne den Quellcode zu verstehen.

    Ehrlich, ich mein paranoia ist nen nettes Hobby, es darf aber ned zu lasten von wiederverwendbarkeit und wartbarkeit gehen.
    Wenn du sowas machen musst, beispielweisse in deiner Firma, dann ist irgendwo was am grundlegenden Prinzip falsch.

    Siene Ideen verstecken macht nur sinn, wenn man geld verdienen damit will, oder aber man ist nen unverbesserlicherer Egoist. Vor missbrauch der ideen ( also du machst dir nen kopf, und nen anderer entwickelt daraus nen produkt und verkaufts) auf der ebene wird man sich so ned schutzen koennen.

    Ciao ...



  • daishi schrieb:

    Das tauschen der Operatoren, wäre ja auch nur eine Idee, wenn ich mal Quellcode weitergebe und verhindern will, das jemand ihn ausschlachtet.
    Bisher habe ich da eine andere Methode verwendet, ich habe angefangen alle Variablennamen und Funktionsnamen alphabetisch zu sortieren und dann wurden sie umbenannt.
    Da hat man dann recht schnell den Überblick verloren, da es nurnoch wilde Buchstabenketten sind, aus denen man die Funktion nicht ablesen kann.

    *rofl*
    Sorry aber das gehört mit zu den dümmsten Sachen die ich in diesem Forum je gehört habe und das will was heißen! 🤡



  • Wie sicherst Du denn deine Quelltexte?



  • daishi schrieb:

    Wie sicherst Du denn deine Quelltexte?

    Sichern? Warum sichern?
    Wenn ich was Gutes programmiert habe dann wird das unter GPL oder BSD-License etc veröffentlicht.

    Wenn Du nicht willst dass Leute Deine Sourcen lesen dann veröffentliche sie halt nicht.



  • Und wenn sich Leute in daishi's Computer einhacken? 😮 😮 🤡



  • Genau, die berüchtigeten Quellcode-Banditen 😃
    Die nix anderes im Sinn haben als redlichen Programmieren die Ideen zu stehlen 😡



  • Und wenn sich Leute in daishi's Computer einhacken?

    Naja, im Moment lachen wir noch drueber .... Aber sag niemals nie! so abwegig ist das thema gar ned !

    Aber, red mit deinem Projectmanager etc, und frag nach nem Speicherkarte oder Memorystick oder aehnliches.
    Leg deine Sourcen auf nen verschluesseltes laufwerk (pgp etc.) und hab den schluessel auf dem neu erstandenen medium ...
    Paranoia hat seinen Preis !!! // sehr wahres und oft zitierter Satz !

    Aber im endeffekt wuerde dir der Projektmanager gern den finanziellen Aufwand spendieren, weil er X mal billiger ist, wie unsleserlicher code !

    Ciao ...


Log in to reply