Elegante Lösung Strukturenvergleich



  • Aloha,

    jo, auch dank an Dich, bin gerade dabei.... 🙂

    Grüße

    BOA



  • Als kurze Lösung würde mir allenfalls noch einfallen die Structs mit memcpy zu vergleichen, aber das ist aber ziemlich dirty. Ausserdem muss dann sichergestellt sein, dass die padding-bytes immer gleich sind (wovon ich mal rein intuitiv nicht ausgehe) oder man muss packed-structs erzeugen. Ich denke die beste Idee ist hier wirklich eine Überladung des == Operators, auch wenns ein wenig Mühe macht.



  • die Structs mit memcpy zu vergleichen, aber das ist aber ziemlich dirty. Ausserdem muss dann sichergestellt sein, dass die padding-bytes immer gleich sind

    Naja, nach einem memcpy ist das sicher kein problem mehr 😉

    du meisnt sicher memcmp.. aber auch damit würde ich gar nicht erst anfangen. erstens Zeiger, zweitens - wie du schon sagtest - padding-bytes.

    am operator== (und elementweises vergleichen) führt kein allgemeiner Weg vorbei.



  • Mann kann Operatoren doch nur von Klassen überschreiben 😕



  • Rapha schrieb:

    Mann kann Operatoren doch nur von Klassen überschreiben 😕

    auch struktoren könne operatoren haben und methoden und kostruktoren und destruktoren und virtuelle funktionen und vererbung und templates und alles halt, was klassen können.



  • Auch schon in C?
    Das ist mir ehrlich gesagt neu 😮
    Was ist dann der Vorzug einer Klasse (außer dass class schöner aussieht als struct) 😉 ?



  • Rapha schrieb:

    Auch schon in C?
    Das ist mir ehrlich gesagt neu 😮
    Was ist dann der Vorzug einer Klasse (außer dass class schöner aussieht als struct) 😉 ?

    in class ist das zeug drinnen private, solange man nicht was anderes schreibt und in struct isses public. da ich das private aber trotzdem hinschreibe in class, isses wurst. "class" läßt sich viel feiner tippen als "struct". außerdem würden mir die leute bei struct nicht glauben, daß der code objektorientiert ist.



  • Stimmt
    und vererben kann man bestimmt auch nicht 😉
    ich hatte private, public, friend und die Vererbung vergessen

    Grüße Rapha



  • Rapha schrieb:

    Stimmt
    und vererben kann man bestimmt auch nicht 😉

    stimmt. deshalb hab ich um 15:46 gepostet, daß vererbung geht.

    bevor es zu lange dauert, hier die ganze geschichte:
    daß in struct per default die sachen public sind und in class private ist der einzige unterschied!

    struct Foo:public string
    {
       private:
          Foo(const Foo&);
       public:
          Foo()
          :string("hallo")
          {
          }
          virtual ~Foo()
          {
          }
       friend ostream& operator<<(ostream& out,Foo const& f)
       {
          return out<<string(f);
       }
    };
    


  • Und schon wieder was gelernt 😃


Anmelden zum Antworten